プロセスIDと子、親、祖父母の名前に基づいてプロセス名を取得しようとしています。
プロセスIDを取得するために使用した名前ps -eo
ですが、その子、親、または祖父母ではありません。
答え1
この試み:
pstree -pls your_pid
木- プロセスツリーを表示します。
-血PIDを表示します。 PIDは、各プロセス名の後の括弧内に10進数で表されます。
-S指定されたプロセスの親プロセスを表示します。
-エル長い行を表示します。デフォルトでは、行はCOLUMNS環境変数または表示幅に切り捨てられます。
答え2
プロセス名を取得するには(pidが与えられます):
pid=42
ps -o comm= -p $pid
特定のpidのサブプロセスの名前を取得するには(Linux procps):
ps -o comm= --ppid $pid
与えられたpid(POSIX)の子プロセスの名前を取得するには:
for cpid in $(ps -eo pid=,ppid= | awk -v pid=$pid '$2==pid{print $1}'); do ps -o comm= -p $cpid; done
与えられたpidの親プロセスの名前を取得するには:
ps -o comm= -p $(ps -o ppid= -p $pid)
与えられたpidの親プロセスの名前を取得するには(まだinitシステムにアクセスできないと仮定する):
ps -o comm= -p $(ps -o ppid= -p $(ps -o ppid= -p $pid))