題 如何從命令行獲取GNU / Linux中給定進程的父PID?


之前已經解決了: cat /proc/1111/status | grep PPid


79
2018-06-08 09:42


起源


快點: grep PPid status |cut -f2 像 time(for((i=0;i<1000;i++));do grep PPid status |cut -f2 >/dev/null;done);想知道是否有更快的東西? - Aquarius Power
@AquariusPower因為你問,fgrep比grep更快。 fgrep PPid status |cut -f2 - jbo5112
sed比grep和cut更快: sed -rn '/PPid/ s/^.*:\s+// p' < status - Marian


答案:


命令行:

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。


92
2018-06-08 11:21



該 = 至少在OS X 10.8.2上不需要簽名。 - jtbandes
@jtbandes:此處使用的等號會抑制標題行的輸出(Linux的 和 OS X.)。 - Dennis Williamson


這是我學習,忘記,重新學習,重複的一件事。但它很有用。 pstree命令的's'標誌顯示一棵樹在N處有一個葉子:

pstree -sA $(pgrep badblocks)
systemd---sudo---mkfs.ext4---badblocks

11
2018-01-31 20:32





父pid是shell變量PPID,所以

echo $PPID

11
2017-09-24 11:55



是的,但是1.我想要其他進程的父pid,2。我希望能夠遍歷所有祖先到init。 - Vi.
另一方面,使用 $PPID 我剛剛解決了谷歌建議這個頁面作為答案的問題。 - Paul Whittaker


這個命令:

ps j

將打印父ID(PPID)所有過程。

對於單個進程,只需傳遞PID,如: ps j 1234

要僅提取值,請過濾輸出 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 $$


6
2018-02-19 21:31



pstree 是我見過的最好的一個。 - sudo


讀/ proc / $ PID /狀態。可以輕鬆編寫腳本:

#!/ bin / sh的
P = $ 1
如果[-z“$ P”];然後
    讀P
科幻
cat / proc /“$ P”/ status | grep PPid:| grep -o“[0-9] *”

5
2018-06-08 09:44



grep '^PPid:' /proc/$1/status | grep -o '[0-9]*' 是你所需要的全部。 (它是 非常罕見 對於Unix工具來說 if [ -z ]; then read 事情。) - grawity
@grawity它有助於做一些事情 echo $$ | ppid | ppid | ppid - Vi.
UUOC無用的貓 - Felipe Alvarez
@FelipeAlvarez,我的手不習慣打字 < /some/file grep | grep | ...。 - Vi.
關於什麼 grep /some/file - Felipe Alvarez


在Linux上:

ps hoppid $thatprocess

3
2017-10-21 17:30





$ ps -p $(ps -p $(echo $$) -o ppid=) -o comm=
    tmux

一個更複雜的示例,它檢查啟動當前進程的父命令 將comm =更改為cmd =以查看完整命令


2
2017-10-19 20:08



無用的使用 迴聲? ;) - bobbogo
某些終端實際上需要它。說實話,我不記得確切,但實際上解決了一個問題。 :d - sebastian_t