回答:
つかいます ps -o ppid=
ps -o ppid= 2072
戻り2061
、あなたが簡単にスクリプトなどで使用することができ、ps -o ppid= -C foo
コマンドでプロセスのPPIDを与えますfoo
。昔ながらのものも使用できますps | grep
:ps -eo ppid,comm | grep '[f]oo'
。ps -f 2072
返品
UID PID PPID C STIME TTY STAT TIME CMD izx 2072 2061 0 07:16?S 0:00 / usr / lib / pulseaudio / pulse / gconf-helper
pstree
関係は次のとおりですpstree -s -p 2072
:
init(1)───pulseaudio(2061)───gconf-helper(2072)
ppid=
pidの後、しかし前のスペースが必要なようです。省略した場合、異なる結果が得られました。
echo $PPID
この親pidからのコマンドが必要な場合:
cat /proc/$PPID/comm
完全なコマンドラインが必要な場合(すべてのオプション付き):
cat /proc/$PPID/cmdline
$PPID
シェルによって定義され、それは親プロセスのPIDです/proc/
、各プロセスのPIDがいくつかあります。次に、場合cat /proc/$PPID/comm
は、PIDのコマンド名をエコーしますPPID
、POSIX標準の一部として定義されているため、POSIX準拠のシェルはこれを適切に設定する必要があります。pubs.opengroup.org/onlinepubs/9699919799/utilities/…を
pstree
コマンド名で使用するを使用pstree
すると、子プロセス名で検索し、親、祖父母、および子プロセスのすべての子とともにプロセスID(PID)を取得できます。
$ pstree -hp | grep sleep
|-cron(763)---cron(795)---sh(839)---display-auto-br(841)---sleep(8414)
この場合sleep
は子コマンドで、そのPIDは8414
です。親IDは841で、と呼ばれdisplay-auto-brightness
ます。祖父母は、sh
プロセスID がのshell()です839
。great祖父母cron
のプロセスIDは795
です。great-great-grandparent cron
のプロセスIDも763
です。
sleep
名前ではなくのプロセスIDで検索する場合は、次を使用できます。
$ pstree -hp | grep 14653
|-cron(763)---cron(795)---sh(839)---display-auto-br(841)---sleep(14653)
sleep
プロセスIDがに変更されたことに注意してください14653
。親(PID 841)は1分間スリープし、1秒間目を覚ましてから、新しいsleep
コマンドを開始して新しいプロセスIDを取得します。これはsleep
、プロセスIDによる検索よりも検索が簡単なもう1つの理由です。
このコードは、日の出と日没に基づいてディスプレイの明るさを自動的に調整し、この質問に合わせて調整されています。
ネストされたチェーンをブートプロセスに戻るまで表示するには、名前の代わりにPIDを使用します。
$ pstree -aps 8541
systemd,1 splash fastboot kaslr
└─cron,763 -f
└─cron,795 -f
└─sh,839 -c /usr/local/bin/display-auto-brightness
└─display-auto-br,841 /usr/local/bin/display-auto-brightness
└─sleep,8541 60
注:さらに1分が経過し、sleepコマンドは新しいPID(8541)を取得します。
807
またはcron
でgrepを実行すると、同じ行が再生成され、スポーンされた場合はさらに多くの子が生成されます。しかし、問題はすべての子供ではなく、親を見つけることでした。
1
です。PID 1を殺すことができるとは思わない。
ps -efj
同じ目的にも使用できます。
例えば、
> ps -efj | head
UID PID PPID PGID SID C STIME TTY TIME CMD
root 1 0 1 1 0 Jul01 ? 00:00:13 /sbin/init splash
root 2 0 0 0 0 Jul01 ? 00:00:00 [kthreadd]
root 3 2 0 0 0 Jul01 ? 00:00:02 [ksoftirqd/0]
root 5 2 0 0 0 Jul01 ? 00:00:00 [kworker/0:0H]
root 7 2 0 0 0 Jul01 ? 00:06:44 [rcu_sched]
root 8 2 0 0 0 Jul01 ? 00:00:00 [rcu_bh]
root 9 2 0 0 0 Jul01 ? 00:00:00 [migration/0]
root 10 2 0 0 0 Jul01 ? 00:00:08 [watchdog/0]
root 11 2 0 0 0 Jul01 ? 00:00:08 [watchdog/1]
ps -o args ...
し、結果を使用することですが、それは少し臭いがあります。