コマンドが早すぎて閉じて見つかりません。 【複製】

コマンドが早すぎて閉じて見つかりません。 【複製】

愚かな場合もありますが、非常に迅速に完了するコマンドを実行しているため、別のウィンドウでコマンドを見つけて、どのファイルが開いているかを確認するのに時間がかかりません。コマンドを実行してすぐに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

関連情報