覚え書き(コマンドなど)

あ、あれなんだっけなと思ったコマンドなどを書いています。

Linux


C言語からSMTP-AUTH


libesmtp というライブラリを利用して。

C++のぐちゃぐちゃシンボルを整形する

「c++filt」というコマンドを使用します。

nm (C++のライブラリ) | c++filt

Perlの@INCに検索パスを追加する

環境変数"PERL5LIB"にパスを含めればいい。
export PERL5LIB="/usr/local/myperl/lib"

RAMDISKを作る

mount -t tmpfs -o size=(サイズ) tmpfs (マウントディレクトリ)

例えば、サイズ32MB、/mnt/ramdisk の場合、
mount -t tmpfs -o size=32m tmpfs /mnt/ramdisk

一時ディレクトリを作る

mktemp -d (ディレクトリ)/aaaa.XXXXXX

XXXXXX の部分が一時ディレクトリ名に置き換えられる

MD5をとる


ファイルのMD5

md5sum (ファイル名)

文字列のMD5

md5sum --string (文字列)

「echo (文字列) | md5sum」とやってはいけません。EOFが入ってしまうので値が変わってしまいますよ。

文字列をBase64エンコード

perl -MMIME::Base64 -e 'print encode_base64("(文字列")")'

telnet に文字列を流し込む


デバックくらいにしか使えないけど。

ヒアドキュメントで流し込む方法


(cat <<_EOF_ ; echo ''; sleep 2) | telnet サーバ名 80 > aaa.dat 2>&1
PROPFIND /mylocation/ HTTP/1.1
Host: test
Depth: 0
Connection: close
Authorization: Basic cm9vdDpyb290
_EOF_
aaa.dat というファイルに出力結果が書き込まれます。Basic認証のヘッダは適当に書き換えて。

カウントダウンさせる

/sbin/getkey -c 5 -m $"aaa=%d"

Linuxからsambaマウント


マウント方法


mount -t smbfs -o uid=xxx,gid=xxx,username=ユーザ名,password=パスワード //コンピュータ名/共有名 /マウント先
 
uid     : マウント先のファイルの所有者として用いる uid
gid     : マウント先のファイルの所有グループとして用いる gid 
username: 接続する際に用いるユーザ名.指定されないときは、環境変数 USER
fmask   : ファイルのパーミッションを指定する。
          これはマウント先のファイルに 設定するパーミッションとして用いられる。 
dmask   : ディレクトリのパーミッションを指定する。
          これはマウント先のディレクトリに 設定するパーミッションとして用いられる。

(例) /mnt/samba_public に\\aaa\public をマウントする(uid/gid = hoge, username/password = hoge2)
$ su -
# mkdir /mnt/samba_public
# mount -t smbfs -o \
  id=hoge,gid=hoge,username=hoge2,password=hoge2,fmask=644,dmask=755,rw //aaa/public /mnt/samba_public

ポート番号


昔はNetBIOS over TCP/IPが用いられてきたため137, 138, 139のTCP/UDPが必要。Windows2000以降では、NetBIOSを用いることなくファイル共有等のTCP/IP通信を行う「Direct Hosting(TCP/445を使用)」が導入されたため、NetBIOSが無くても通信できるようになっている → 445/TCP (Direct Hosting)


共有メモリ、セマフォの一覧表示

リミットを表示

ipcs -l

Usedを表示

ipcs -u

セマフォを消す

ipcrm sem (ID名)
IDはスペースで区切って複数記述可能。
プログラムが暴走してセマフォが残ってしまったときなどに便利。

共有メモリを消す

ipcrm shm (ID名)

vim関連


タブ記号を空白にする

:set expandtab

シェルコマンド関連


cdした先のディレクトリパスを変数に代入する

VAL=`cd (ディレクトリ); pwd`

configureの中で頻出する構文。
これだと実際にcdしなくていいし、これが動かないプラットホームはないだろう。

echo -n が存在しないプラットフォームに対応するには?


# Check for echo -n vs echo \c
if echo '\c' | grep -s c >/dev/null 2>&1 ; then
    ECHO_N="echo -n"
    ECHO_C=""
else
    ECHO_N="echo"
    ECHO_C='\c'
fi

(使い方)
$ECHO_N "Input value = "$ECHO_C

入力された文字がエコーバックされないようにする

stty -echo

上記を元に戻す

stty echo

RPM関連

データベースが壊れたら?

rpm --rebuilddb

パッケージから中身を取り出す

rpm2cpio (RPMパッケージ名) | cpio -id

カレントに指定したパッケージの中身がディレクトリも含めて出力されます。

manファイルから直接manを見たい

(例) apacheのman(apachectl.8)を直接見る
groff /usr/local/apache2/man/man8/apachectl.8 -Tnippon -mandocj | less -isr

バイナリファイルのRPATHを書き換えるツール

http://solaris.sunfish.suginami.tokyo.jp/tips/play...

GDBでCOREを無理矢理吐かせる方法


対象プロセスのプロセスIDを調べる。
$ ps aux | grep コマンド名

gdbにて、対象プロセスにアタッチする。
$ gdb コマンドファイル プロセスID

(gdb)プロンプト上で、generate-core-file コマンドを実行する
(gdb) generate-core-file

(gdb)プロンプト上で、detachコマンドを実行しプロセスからデタッチする。
(gdb) detach

gdbを終了する。
(gdb) quit

上記を自動で実行。
gdb <<_GDB_CMD_ > display.dat 2>&1
attach $pid
gcore core.$pid
detach
quit
_GDB_CMD_

core.$pid というファイルにCoreイメージが、display.dat というファイルにGDB操作履歴が出力される。
Linux以外ではgcoreというプログラムがある。
gdb の5.2以降で本機能がサポートされた。

Windows

IPアドレスからマシン名を取得する

nbtstat -A (IPアドレス)
2006年03月26日(日) 00:27:53 Modified by hc75ybwf




スマートフォン版で見る