unixの役立つTIPSいろいろ

/dev/null をリダイレクト と rm の違い

■ /dev/null をリダイレクト と rm の違い

   rm はファイルそのものを削除してしまうため、例えばsquidのaccess.logやsendmailの
   maillogなど、プロセスが開いているファイルサイズが肥大化したときの対処としては適
   切ではない。

	cat /dev/null > access.log

   としてやることで、プロセスに影響を与えずにログファイルのファイルサイズを0にでき
   る。

キャッシュファイルの削除とかにいいかもしれない。

/dev/null へのシンボリックリンク

■ /dev/null へのシンボリックリンク

   例えばログが要らない時は

	# rm access.log

   の後、

	# ln -s /dev/null access.log

Apacheのログ保存をしたいときとしたくないときを変えるときにApacheの再起動とかしなくてよくなる。/dev/nullはげしく使えるなあ。

for文による連続処理

■ for文による連続処理

   例えば100個あるファイルの拡張子を全て変換するには、

	for i in *.doc
	 do
	     mv $i `echo $i | sed s/doc$/txt/`
	 done

   カレントディレクトリ内のzipファイルを一気に全部解凍するには、

	for i in *.zip
	 do
	    unzip $i
	 done

   これらはファイルの操作を行うので、ミスが怖いときはコマンド列全体をechoの引数にす
   れば確認ができる。

	for in in *.doc
	    do
		echo "mv $i `echo $i | sed s/doc$/txt/`"
	    done

   例: dvi2ps との連携

        for i in *.dvi
	    do
		dvi2ps $i.tex | lpr
	    done

	※〜to〜系のプログラムなら何にでも応用が効く。ファイルにリダイレクトする場
	 合はsedを挟んでファイル名を整形すると良い。

   例: plain2

        for i in *.txt
	    do
		plain2 -tex `echo $i | sed s/txt/tex/`
	    done

for文はぜったいに身につけようっと。

ssh による暗号化通信の手順

■ ssh による暗号化通信の手順

   1.クライアントで暗号鍵を生成する。

   $ ssh-keygen -d
   ...
   Enter passphrase (empty for no passphrase): 
   Enter same passphrase again: 
   ...

   ~/.ssh に秘密鍵(id_dsa)と公開鍵(id_dsa.pub)の2つの鍵が生成される。


   2.サーバーに公開鍵を転送する。

   サーバー上のホームディレクトリに .ssh ディレクトリを作成する。このディ
   レクトリに公開鍵のid_dsa.pubを転送し、renameまたはリダイレクトで
   authorized_keys という別のファイルに中身を加える。

   複数のクライアントから一つのサーバーへログインする場合はクライアントご
   とに公開鍵が必要になるので、すべて authorized_keys に公開鍵をまとめる
   必要がある。

   ※ SSH1とSSH2でauthorized_keysが違うはず。その辺も調べる。

いままでputtykeygenでやってた。

tcpdump

â–  tcpdump

   tcpdump では監視の対象となるポートを指定できる。

   # tcpdump not src port 23 and not dst port 23

   src
   dst
   not

   がある。加えてandで複数指定。またホスト名表示にDNSルックアップを抑止するには、
   -n オプションを使う。

   # tcpdump -n src port 80 or dst port 80

   たとえばDNSルックアップの遅延時間を調べる場合

   # tcpdump -n src port 53 or dst port 53

   とする。

   03:47:26.510713 133.2.103.130.32768 > 133.2.103.5.53:  61366+[|domain] (DF)
   03:47:26.512811 133.2.103.5.53 > 133.2.103.130.32768:  61366*[|domain] (DF)
   03:47:26.521361 133.2.103.130.32768 > 133.2.103.5.53:  49978+[|domain] (DF)
   03:47:26.522912 133.2.103.5.53 > 133.2.103.130.32768:  49978*[|domain] (DF)

   と出力される。+ が始点。また、これをみるとDNSへの問い合わせは32768から出て、
   buturi の 53 ポートへパケットは流れ、応答パケットはbuturiの53からgenovaの
   32768へ帰ってきていることがわかる。

こりゃおもしろそう。

bash の行編集用キーバインド

■ bash の行編集用キーバインド

   C-a		カーソルを行頭へ
   C-b		カーソルを1つ左へ
   C-c		フォアグラウンドで実行中のジョブを終了
   C-d		カーソル直下の1文字を削除/ログアウト
   C-e		カーソルを行末へ移動
   C-k		カーソルより右側の文字列をカット(キルバッファへ登録)
   C-l		画面全体をクリア
   C-m		改行
   C-u		行全体をクリア
   C-w		マークからカーソル位置までをカット(キルバッファへ登録)
   C-y		キルバッファの内容を貼り付け(ヤンク)
   C-@		マーク開始 (C-SPACEと同様)

覚えよう。