it-swarm-ru.tech

Как получить родительский PID данного процесса в GNU/Linux из командной строки?

Решено, прежде чем спросить: cat /proc/1111/status | grep PPid

81
Vi.

Командная строка:

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.

95
Dennis Williamson

Родительский pid находится в переменной PPID оболочки, поэтому

echo $PPID
12
Ivan Novotny

Это одна из тех вещей, которые я изучаю, забываю, заново изучаю, повторяю. Но это полезно. Флаг 's' команды pstree показывает дерево с листом в N:

pstree -sA $(pgrep badblocks)
systemd---Sudo---mkfs.ext4---badblocks
12
user194394

Эта команда:

ps j

распечатает родительские идентификаторы (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 $$.

9
kenorb

Чтение/proc/$ PID/статус. Может быть легко написано:

 #!/bin/sh 
 P = $ 1 
 if [-z "$ P"]; затем 
 прочитайте P 
 fi 
 cat/proc/"$ P"/status | grep PPid: | grep -o "[0-9] *" 
5
Vi.

В Linux:

ps hoppid $thatprocess
4
jthill
$ ps -p $(ps -p $(echo $$) -o ppid=) -o comm=
    tmux

Немного более сложный пример, который проверяет команду родителя, запустившего текущий процесс. Измените comm = на cmd =, чтобы увидеть полную команду.

2
sebastian_t

Вот быстрое решение, которое также должно работать:

ps $$
1
Gevork Palyan

Запустите top с любыми параметрами, такими как -u username and -p PID.

И пока top работает, нажмите f, он показывает список опций, которые вы хотите отобразить в выводе top, и отображаемые параметры будут отображаться ЗАГЛАВНЫМИ буквами, а параметры, которые не отображаются, будут показаны строчными буквами.

Таким образом, введя букву перед параметром, вы можете включить или отключить его. Для ID родительского процесса вы должны ввести b а затем нажмите Enter, он будет отображать PPID в верхнем выводе.

1
Praveen S.