過去10秒間に実行されたプロセスのコマンドラインを表示する方法

過去10秒間に実行されたプロセスのコマンドラインを表示する方法

過去10秒間に実行されたプロセスを記録して一覧表示するビューはありますか?

特にコマンドラインを追跡したいと思います。

答え1

プロセスが完了していない場合は、次の方法で見つけることができます。

ps axho etime,cmd| sed ':a;s/^\(0*\) /\10/g;ta' | sort | less

しかし、プロセスがすでに完了している場合、確実性が低下します。

検索する場所を知る必要があります...

警告する!以下は、バイナリがキャッシュにない場合、つまりしばらくアクセスされなかった場合にのみ機能します。

おそらく単純なものでls -ltru十分です。

/bin/ls -ltru /etc/init.d | tail

そうしないと、次のようなより複雑なコマンドが発生する可能性があります。

find /usr/bin -type f -amin -1

find ${PATH//:/ } -type f -amin -1

find ${PATH//:/ } /home/*/bin -type f -amin -1

1分以内にアクセスしたすべてのファイルが表示されます。

10秒ははるかに難しいです。

while read time;do
    read name
    [ $time -lt 10 ] && echo $name
  done < <(find ${PATH//:/ } /home/*/bin -type f -amin -1 -print0 |
    xargs -0 --no-run-if-empty stat -c $(date +%s)$'-%X ;"%n\n"' |
    bc)

答え2

この試み:

ps k-etime h -eo etimes,command | while read etime comm; do [ $etime -lt 10 ] && echo -e "$etime\t$comm"; done

これにより、過去10秒以内に開始され、まだ実行中のすべてのプロセスが表示されます。

関連情報