私はLinuxで短いサブプロセスのPIDを取得する方法を探しています。人間の観点から見ると、その過程は即時です。私は子プロセスを生成する親プロセスを知っています。
特定の親プロセスで生成されたすべてのプロセスに関する情報を記録する方法はありますか?
私は子供のPIDを遡って調べる方法ではなく、そのようなことが発生した後に記録する方法を探しています。
ベストアンサー1
監査システムを使用できます。
sudo auditctl -a exit,always -S execve -F ppid="$pid"
$pid
子プロセスがコマンドを実行するたびに監査エントリが生成されます。audit.log
次のようなものがあります。
type=SYSCALL msg=audit(1373986729.977:377): arch=c000003e syscall=59 success=yes exit=0 a0=7ff000e4b188 a1=7ff000e4b1b0 a2=7fff928d47e8 a3=7fff928caac0 items=2 ppid=7502 pid=691 auid=10031 uid=10031 gid=10031 euid=10031 suid=10031 fsuid=10031 egid=10031 sgid=10031 fsgid=10031 ses=1 tty=pts5 comm="echo" exe="/bin/echo" key=(null)
type=EXECVE msg=audit(1373986729.977:377): argc=2 a0="/bin/echo" a1="test"
type=CWD msg=audit(1373986729.977:377): cwd="/tmp"
type=PATH msg=audit(1373986729.977:377): item=0 name="/bin/echo" inode=131750 dev=fe:00 mode=0100755 ouid=0 ogid=0 rdev=00:00
pid
そこから他のものを見つけることができます。
特定のタスクを実行する必要がないプロセスに興味がある場合と、fork
システムコールのclone
監査ルールを追加できます。