覚え書き(コマンドなど)
あ、あれなんだっけなと思ったコマンドなどを書いています。
libesmtp というライブラリを利用して。
例えば、サイズ32MB、/mnt/ramdisk の場合、
XXXXXX の部分が一時ディレクトリ名に置き換えられる
「echo (文字列) | md5sum」とやってはいけません。EOFが入ってしまうので値が変わってしまいますよ。
デバックくらいにしか使えないけど。
(例) /mnt/samba_public に\\aaa\public をマウントする(uid/gid = hoge, username/password = hoge2)
昔はNetBIOS over TCP/IPが用いられてきたため137, 138, 139のTCP/UDPが必要。Windows2000以降では、NetBIOSを用いることなくファイル共有等のTCP/IP通信を行う「Direct Hosting(TCP/445を使用)」が導入されたため、NetBIOSが無くても通信できるようになっている → 445/TCP (Direct Hosting)
プログラムが暴走してセマフォが残ってしまったときなどに便利。
configureの中で頻出する構文。
これだと実際にcdしなくていいし、これが動かないプラットホームはないだろう。
(使い方)
カレントに指定したパッケージの中身がディレクトリも含めて出力されます。
対象プロセスのプロセスIDを調べる。
gdbにて、対象プロセスにアタッチする。
(gdb)プロンプト上で、generate-core-file コマンドを実行する
(gdb)プロンプト上で、detachコマンドを実行しプロセスからデタッチする。
gdbを終了する。
上記を自動で実行。
core.$pid というファイルにCoreイメージが、display.dat というファイルにGDB操作履歴が出力される。
Linux以外ではgcoreというプログラムがある。
gdb の5.2以降で本機能がサポートされた。
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