コマンドライン:
ps -o ppid= -p 1111
機能:
ppid () { ps -p ${1:-$$} -o ppid=; }
エイリアス (関数が望ましい):
alias ppid='ps -o ppid= -p'
スクリプト:
#!/bin/sh
pid=$1
if [ -z $pid ]
then
read -p "PID: " pid
fi
ps -p ${pid:-$$} -o ppid=
関数またはスクリプトに PID が指定されていない場合、デフォルトで現在のプロセスの PPID が表示されます。
エイリアスを使用するには、PID を指定する必要があります。
親 ID を出力するには (PPID
) すべてのプロセスのうち、次のコマンドを使用します:
ps j
単一のプロセスの場合は、次のように PID を渡すだけです:ps j 1234
.
値のみを抽出するには、出力を awk
でフィルタリングします など:
ps j | awk 'NR>1 {print $3}' # BSD ps
ps j | awk 'NR>1 {print $1}' # GNU ps
すべての親の PID を一覧表示するには、pstree
を使用します (お持ちでない場合はインストールしてください):
$ pstree -sg 1234
systemd(1)───sshd(1036)───bash(2383)───pstree(3007)
現在のプロセスの親 PID を取得するには、echo $$
を使用します .
これは、私が学び、忘れ、再学習し、繰り返すものの 1 つです。しかし、それは便利です。 pstree コマンドの「s」フラグは、N:に葉を持つツリーを示します。
pstree -sA $(pgrep badblocks)
systemd---sudo---mkfs.ext4---badblocks