例のセクションによるとlsof(8) のマニュアルページ manpages.ubuntu.com でプロセスにファイルが開いている場合は、コマンドを実行したり操作を実行したりできる必要があります。
プロセスが開いている場合にのみアクションを実行するには、次のように
/u/abe/foo
します。lsof /u/abe/foo echo "still in use"
この構文を繰り返しモードで試しても機能しません。
$ lsof -r /u/abe/foo tput bel
lsof: status error on tput: No such file or directory
lsof: status error on bel: No such file or directory
=======
マニュアルページを見ましたが、かなり長くて何か見落としているようです。
私は何を見逃していますか?
答え1
マンページにリストされていますが、これは有効な呼び出しではありませんlsof
。lsof
考慮事項は次echo
のとおりstill in use
です。
lsof /u/abe/foo echo "still in use"
結果を得てlsof
それに応じてアクションを実行するには、終了コードを使用できます。存在するbash
:
lsof filename && echo "still in use"
または:
lsof filename || echo "not in use"
これを繰り返し実行するには、上記のコードをループに入れるか、繰り返しパターンにlsof
入れてから標準出力を処理できますbash
。たとえば、次のようになります。
lsof -t -r2 filename |
grep --line-buffered -v '=======' |
while read pid
do
echo Process $pid is using the file
done