Відповіді:
Командний рядок:
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.
=
Знак не потрібен, принаймні , на OS X 10.8.2.
Це одна з тих речей, які я навчаюсь, забуваю, переучую, повторюю. Але це корисно. Прапор команди команди pstree показує дерево з листом у N:
pstree -sA $(pgrep badblocks)
systemd---sudo---mkfs.ext4---badblocks
Батьківський pid знаходиться в змінній оболонці PPID, так що
echo $PPID
$PPID
просто вирішило проблему, на яку Google запропонував цю сторінку як відповідь.
Щоб надрукувати батьківський ідентифікатор ( PPID
) всіх процесів, використовуйте цю команду:
ps j
Для одного процесу, просто передати PID, як: ps j 1234
.
Щоб витягнути лише значення, виведіть фільтр awk
, наприклад:
ps j | awk 'NR>1 {print $3}' # BSD ps
ps j | awk 'NR>1 {print $1}' # GNU ps
Щоб перерахувати PID-адреси всіх батьків, використовуйте pstree
(встановіть його, якщо у вас його немає):
$ pstree -sg 1234
systemd(1)───sshd(1036)───bash(2383)───pstree(3007)
Щоб отримати батьківський PID поточного процесу, використовуйте echo $$
.
pstree
це найприємніше, що я тут бачив.
ps j
чудово, тому що він доступний у багатьох дистрибутивах і легко компонується
Прочитати / proc / $ PID / статус. Легко сценарій:
#! / бін / ш P = 1 долар якщо [-z "$ P"]; тоді читати П фі cat / proc / "$ P" / статус | grep PPid: | grep -o "[0-9] *"
grep '^PPid:' /proc/$1/status | grep -o '[0-9]*'
це все, що вам потрібно. ( Дуже рідко для інструментів Unix це робити if [ -z ]; then read
.)
echo $$ | ppid | ppid | ppid
< /some/file grep | grep | ...
.
grep /some/file
$ ps -p $(ps -p $(echo $$) -o ppid=) -o comm=
tmux
Трохи складніший приклад, який перевіряє команду батька, який запустив поточний процес Change comm = to cmd =, щоб побачити повну команду
Ось швидке рішення, яке також має працювати:
ps $$
Запускайте top
будь-які варіанти, які вам подобаються -u username and -p PID
.
І поки top
працює натискання f, він показує перелік параметрів, які ви хочете відобразити у top
висновку, а відображені параметри будуть показані літерами CAPITAL, а параметри, які не відображатимуться, будуть показані малими літерами.
Отже, ввівши букву перед параметром, ви можете включити або відключити її. Для ідентифікатора батьківського процесу потрібно ввести, bа потім натиснути Enter, він відображатиме PPID у верхньому висновку.
htop
вас можна налаштувати PPID
стовпчик.
grep PPid status |cut -f2
як уtime(for((i=0;i<1000;i++));do grep PPid status |cut -f2 >/dev/null;done)
; цікаво, чи є щось ще швидше?