Answers:
命令行:
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。
=
标志是没有必要的,至少在OS X 10.8.2上。
这是我学习,忘记,重新学习,重复的一件事。但它很有用。 pstree命令的's'标志显示一棵树在N处有一个叶子:
pstree -sA $(pgrep badblocks)
systemd---sudo---mkfs.ext4---badblocks
父pid是shell变量PPID,所以
echo $PPID
$PPID
我刚刚解决了谷歌建议这个页面作为答案的问题。
这个命令:
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 $$
。
pstree
是我见过的最好的一个。
读/ proc / $ PID /状态。可以轻松编写脚本:
#!/bin/sh P=$1 if [ -z "$P" ]; then read P fi cat /proc/"$P"/status | grep PPid: | grep -o "[0-9]*"
grep '^PPid:' /proc/$1/status | grep -o '[0-9]*'
是你所需要的全部。 (它是 非常罕见 对于Unix工具来说 if [ -z ]; then read
事情。)
echo $$ | ppid | ppid | ppid
< /some/file grep | grep | ...
。
grep /some/file
$ ps -p $(ps -p $(echo $$) -o ppid=) -o comm=
tmux
一个更复杂的示例,它检查启动当前进程的父命令 将comm =更改为cmd =以查看完整命令
跑 top
你想要的任何选择,比如 -u username and -p PID
。
而且 top
工作出版社 F ,它显示了您要显示的选项列表 top
输出,显示的参数将以大写字母显示,显示或不显示的参数将以小写字母显示。
因此,通过在参数前输入字母,您可以启用或禁用它。对于父进程ID,您必须输入 b 然后按 输入 ,它会在顶部输出中显示PPID。
htop
你可以配置 PPID
柱。
grep PPid status |cut -f2
像time(for((i=0;i<1000;i++));do grep PPid status |cut -f2 >/dev/null;done)
;想知道是否有更快的东西?