PS:“ps -o comm= -p $PPID”有什么作用

use*_*300 4 linux bash ps bashrc

我有一个脚本可以执行ps -o comm= -p $PPID.

解释说这会获取父进程名称。

从手册页我发现-o意味着用户定义的格式,comm意味着命令并-p意味着通过给定的PID选择进程 - 在这种情况下$PPID,这意味着父PID。

  • 什么comm= -p $PPID意思?
  • 这个命令是如何工作的?

pol*_*lym 6

  • -o comm=意味着用户输出应该只是命令名称,但没有任何列标题。例如,如果您这样做-o comm=COMMAND,它会为您打印一个列标题COMMAND

    $ ps -o comm= -p $PPID
    xterm
    $ ps -o comm=COMMAND -p $PPID
    COMMAND
    xterm
    
    Run Code Online (Sandbox Code Playgroud)
  • -p $PPID选择由定父的过程PID中,PPID

这意味着-o comm= -p $PPID是两个独立的选项。

因此,您的命令实际上确实通过它为您提供了父进程的名称PPID

例如,如果我开始tmux,它有PID1632。现在我bash在每个窗格中启动几个,每个都有 1632 的 PPID,但有自己的 PID。

了解这里更紧靠PIDPPID秒。

我不确定,但ps可能会查看/proc/$PPID/comm以确定父级的命令名称。

就我而言,执行此命令会为您提供父进程的名称,而无需使用ps

$ cat /proc/$PPID/comm
tmux
$ cat /proc/1632/comm
tmux
Run Code Online (Sandbox Code Playgroud)