81

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

9 ответов9

94

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

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.

11

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

echo $PPID
11

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

pstree -sA $(pgrep badblocks)
systemd---sudo---mkfs.ext4---badblocks
7

Эта команда:

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 $$ .

5

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

#!/bin/sh
P=$1
if [ -z "$P" ]; then
    read P
fi
cat /proc/"$P"/status | grep PPid: | grep -o "[0-9]*"
4

В Linux:

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

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

1

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

ps $$
1

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

И пока top работает, нажмите f, он показывает список опций, которые вы хотите отобразить в top выводе, и отображаемые параметры будут показаны заглавными буквами, а параметры, которые не отображаются, будут показаны строчными буквами.

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .