我有一个脚本可以做到这一点ps -o comm= -p $PPID
。
解释说这获取父进程名称。
从手册页中我发现-o
意味着用户定义的格式,comm
意味着命令,-p
意味着通过给定的 PID 选择进程 - 在本例中$PPID
,这意味着父 PID。
- 这是什么
comm= -p $PPID
意思? - 这个命令是如何工作的?
答案1
-o comm=
意味着用户输出应该只是命令名称,但没有任何列标题。例如,如果您这样做-o comm=COMMAND
,它会打印一个列标题COMMAND
:$ ps -o comm= -p $PPID xterm $ ps -o comm=COMMAND -p $PPID COMMAND xterm
-p $PPID
选择给定父进程的PID
,PPID
。
这意味着-o comm= -p $PPID
有两个独立的选项。
因此,您的命令本质上确实通过其父进程的名称为您提供了父进程的名称PPID
。
例如,如果我启动tmux
,它的 PID 为PID
1632。现在我bash
在每个窗格中启动几个,每个窗格的 PPID 为 1632,但有自己的 PID。
您可以了解更多信息什么是PID和PPID?
我不确定,但ps
可能会考虑/proc/$PPID/comm
确定父级的命令名称。
就我而言,执行此命令将为您提供父进程的名称,而不使用ps
:
$ cat /proc/$PPID/comm
tmux
$ cat /proc/1632/comm
tmux