linux コマンドメモ
- cp -p オプション
- cp -i オプション
- rm -f オプション
- lsof コマンド
cp -p オプション
タイムスタンプを保持したままコピー。
使う理由
作業ディレクトリに一旦関連ファイルを集めたあと、 その作業ディレクトリごとlftpでmirror -Rev する場合において、 コピー元ファイルのタイムスタンプを維持しないと、 内容が同じなのに、mirrorコマンドによりリモートへファイル転送が 起こってしまう。 これを避けるために cp -p オプションを使う。
cp -i ,mv -i オプション
コピーや移動するときに上書きしていいかどうか、確認するオプション。
例
まとめてふぃあるを移動したい場合など、もしかして、 同じ名前のファイルが移動先にあったら困るな、という場合に -i オプションを付けると安心して移動できる。
$ cp -i ./*.txt /some/where/
$ mv -i ./*.txt /some/where/
rm -f オプション
警告メッセージを表示しない。
本来は、書き込み許可のないファイルを削除する場合に使う、とUNIXコマンドリファレンスには書かれている。
使う理由
makefileやスクリプトで削除処理をする場合、 削除対象となるファイルが存在しない場合、エラーメッセージが表示されたり、 makeの場合は処理がストップしてしまう。
-f オプションを付けて削除処理を記述しておけば、 対象ファイルが存在しなくても、エラーメッセージが出ないため、 問題を避けられる。
例
$ rm -f *.html
lsof (LiSt Open Files)
tomcatが、Too many open files といったエラーメッセージを発して落ちる場合がある。 (tomcatに限った話ではないが) このような場合は、ファイルを同時に開きすぎている可能性があるので、 lsofコマンドを使って、ファイルを開きすぎていないか調べる。
/usr/sbin/lsof -p <プロセスのpid>
これで現在使っている(リソースをホールドしている)ファイルが列挙されるので、 これの数の増減や内容をチェックすればよい。
以下のように行数をカウントして、処理のたびにどんどん行数が増える=使用中のファイルが増える 場合は、プログラム中にファイルをオープンしたきり、クローズしていないバグが潜んでいる可能性大。
/usr/sbin/lsof -p <プロセスのpid> | wc