愚かな場合もありますが、非常に迅速に完了するコマンドを実行しているため、別のウィンドウでコマンドを見つけて、どのファイルが開いているかを確認するのに時間がかかりません。コマンドを実行してすぐにlsofを追加する確実な方法はありますか? (完了するまでどのファイルが開かれるかを追跡することをお勧めします)
編集 - プロセスが閉じた後にプロセスにlsofを追加することをお勧めします。リアルタイムでどのファイルが開くかを確認する必要はありません。
答え1
おそらく、この状況でlsof
最も実用的なツールではないでしょう。strace
この場合に使用します。たとえば、ls
コマンドが実行される短時間にどのファイルが開かれたかを確認します。
strace -e trace=open ls
答え2
たとえば、ウィンドウでこのコマンドを使用できますwatch
。
watch -d 'lsof| `fgrep cron`'
このコマンドは2秒ごとにウィンドウを更新します。 -n オプションを使用すると時間を短縮できます。詳細についてはを参照してくださいman watch
。
パイプを使用すると、検索| fgrep cron
中の結果のみを表示できます。
別のウィンドウでコマンドを使用すると、この場合はcronコマンドに関連するファイルとユーザーが表示されます。特定のコマンドまたはプログラムで cron コマンドを変更します。
答え3
「strace」の使用を検討できます。これは、ファイルを開くなど、実行開始からシステムコールを表示します。
答え4
次のコマンドを使用すると、開いているすべてのファイルをリアルタイムで監視できます。
sudo sysdig -p "%12user.name %6proc.pid %12proc.name %3fd.num %fd.typechar %fd.name" evt.type=open
特定のプロセス/コマンド名(スクリプトではない)に対して、次のことができます。 (apache2の例)
sudo sysdig -p "%12user.name %6proc.pid %12proc.name %3fd.num %fd.typechar %fd.name" evt.type=open and proc.name=apache2