尋ねられる前に解決されました:cat /proc/1111/status | grep PPid
コマンドライン:
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を指定する必要があります。
親pidはシェル変数PPIDにあるので、
echo $PPID
これは私が学ぶこと、忘れること、再学習すること、繰り返すことのうちの1つです。しかしそれは便利です。 pstreeコマンドの 's'フラグは、Nに葉がある木を表示します。
pstree -sA $(pgrep badblocks)
systemd---Sudo---mkfs.ext4---badblocks
このコマンドは:
ps j
すべてのプロセスの親ID(PPID
)を表示します。
単一プロセスの場合は、単にps j 1234
のようにPIDを渡します。
値のみを抽出するには、次のようにawk
で出力をフィルター処理します。
ps j 1234 | awk 'NR>1 {print $3}' # BSD ps
ps j 1234 | awk 'NR>1 {print $1}' # GNU ps
すべての親のPIDを一覧表示するには、次のようにpstree
を使用します。
$ pstree -sg 1234
systemd(1)───sshd(1036)───bash(2383)───pstree(3007)
現在のプロセスの親PIDを取得するには、次にecho $$
を使用します。
/ proc/$ PID/statusを読みます。簡単にスクリプトを書くことができます:
#!/ bin/sh P = $ 1 if [-z "$ P"];次に P fi cat/proc/"$ P"/status |を読んでください。 PPID: grep -o "[0-9] *"
Linuxの場合
ps hoppid $thatprocess
$ ps -p $(ps -p $(echo $$) -o ppid=) -o comm=
tmux
現在のプロセスを開始した親のコマンドをチェックするもう少し複雑な例full commandを見るには、comm =をcmd =に変更します
これはまた働くべきである速い解決はある:
ps $$
-u username and -p PID
のように、必要なオプションを指定してtop
を実行します。
そしてtop
が働いている間 fこれは、top
出力に表示したいオプションのリストを表示し、表示されているパラメータは大文字で表示され、表示されていないパラメータは小文字で表示されます。
そのため、パラメータの前に文字を入力することで、それを有効または無効にすることができます。親プロセスIDの場合は、入力する必要があります b そしてを押す EnterPPIDが一番上の出力に表示されます。