Решено, прежде чем спросить: cat /proc/1111/status | grep PPid
9 ответов
Командная строка:
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.
Родительский pid находится в переменной оболочки PPID, поэтому
echo $PPID
Это одна из тех вещей, которые я изучаю, забываю, заново изучаю, повторяю. Но это полезно. Флаг 'p' команды pstree показывает дерево с листом в N:
pstree -sA $(pgrep badblocks)
systemd---sudo---mkfs.ext4---badblocks
Эта команда:
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 $$
.
Чтение /proc /$ PID /статус. Может быть легко написано:
#!/bin/sh P=$1 if [ -z "$P" ]; then read P fi cat /proc/"$P"/status | grep PPid: | grep -o "[0-9]*"
В Linux:
ps hoppid $thatprocess
$ ps -p $(ps -p $(echo $$) -o ppid=) -o comm=
tmux
Немного более сложный пример, который проверяет команду родителя, запустившего текущий процесс. Измените comm = на cmd =, чтобы увидеть полную команду.
Вот быстрое решение, которое также должно работать:
ps $$
Запустите top
с любыми опциями, такими как -u username and -p PID
.
И пока top
работает, нажмите f, он показывает список опций, которые вы хотите отобразить в top
выводе, и отображаемые параметры будут показаны заглавными буквами, а параметры, которые не отображаются, будут показаны строчными буквами.
Таким образом, введя букву перед параметром, вы можете включить или отключить его. Для идентификатора родительского процесса вы должны ввести b и затем нажать Enter, он будет отображать PPID в верхнем выводе.