特定のプロセスIDから親/子プロセスIDを取得する

特定のプロセスIDから親/子プロセスIDを取得する

プロセス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))

答え3

次のコマンドを使用して、子プロセスIDのリストを取得できます。

pgrep -P $parent_pid

~に帰属この回答

関連情報