PS: что делает «ps -o comm = -p $ PPID»

У меня есть скрипт ps -o comm= -p $PPID .

Объяснение говорит, что это получает имя родительского процесса.

Из man-страницы, которую я обнаружил, -o означает определенный пользователем формат, команда comm означает команду и -p означает выбор процесса с помощью данного PID – в этом случае $PPID , что означает родительский PID.

  • Что означает comm= -p $PPID ?
  • Как эта команда работает?

  • -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 1632. Теперь я запускаю несколько bash в каждой панели, каждая из которых имеет PPID 1632, но имеет свой собственный PID.

Узнайте здесь больше, а не PID и PPID .

Я не уверен, но ps может посмотреть на /proc/$PPID/comm чтобы определить имя команды родителя.

В моем случае выполнение этой команды дает вам имя процесса родителя без использования ps :

 $ cat /proc/$PPID/comm tmux $ cat /proc/1632/comm tmux