Respuestas:
Utilizar ps -o ppid=
ps -o ppid= 2072
retornos 2061
, que puede usar fácilmente en un script, etc., ps -o ppid= -C foo
proporciona el PPID del proceso con el comando foo
. También puede utilizar la antigua usanza ps | grep
: ps -eo ppid,comm | grep '[f]oo'
.ps -f 2072
devoluciones
UID PID PPID C TIEMPO TTY ESTADO TIEMPO CMD izx 2072 2061 0 07:16? S 0:00 / usr / lib / pulseaudio / pulse / gconf-helper
pstree
relación es pstree -s -p 2072
:
init (1) ───pulseaudio (2061) ───gconf-helper (2072)
ppid=
pero antes del pid parece ser necesario. Obtuve resultados diferentes si lo omití.
echo $PPID
si necesita el comando de este padre pid:
cat /proc/$PPID/comm
si necesita la línea de comando completa (con todas las opciones):
cat /proc/$PPID/cmdline
$PPID
está definido por el shell, es el PID del proceso padre/proc/
, tienes algunos directorios con el PID de cada proceso. Entonces, si usted cat /proc/$PPID/comm
, se hace eco del nombre del comando del PIDPPID
se define como parte del estándar POSIX, por lo que cualquier shell compatible con POSIX debe configurarlo adecuadamente. Ver pubs.opengroup.org/onlinepubs/9699919799/utilities/…
pstree
por nombre de comandoUtilizando pstree
puede buscar por el nombre del proceso secundario y obtener el ID de proceso (PID) junto con los padres, abuelos y cualquier elemento secundario del proceso secundario:
$ pstree -hp | grep sleep
|-cron(763)---cron(795)---sh(839)---display-auto-br(841)---sleep(8414)
En este caso sleep
es el comando hijo y su PID es 8414
. Su identificación principal es 841 y se llama display-auto-brightness
. El abuelo es un shell ( sh
) con un ID de proceso de 839
. El bisabuelo tiene cron
una identificación de proceso de 795
. El tatarabuelo también cron
tiene un ID de proceso 763
.
Si desea buscar por ID de proceso en sleep
lugar de nombre, puede usar:
$ pstree -hp | grep 14653
|-cron(763)---cron(795)---sh(839)---display-auto-br(841)---sleep(14653)
Observe que la sleep
ID del proceso cambió a 14653
. El padre (PID 841) duerme durante 1 minuto, se despierta por una fracción de segundo y luego inicia un nuevo sleep
comando que obtiene una nueva ID de proceso. Esta es otra razón por la cual buscar sleep
es más fácil que buscar por ID de proceso.
Este código fue tomado de: Ajusta automáticamente el brillo de la pantalla según el amanecer y el atardecer y se adapta a esta pregunta.
Para ver una cadena anidada hasta el proceso de inicio, use el PID en lugar del nombre:
$ pstree -aps 8541
systemd,1 splash fastboot kaslr
└─cron,763 -f
└─cron,795 -f
└─sh,839 -c /usr/local/bin/display-auto-brightness
└─display-auto-br,841 /usr/local/bin/display-auto-brightness
└─sleep,8541 60
Nota: Ha pasado otro minuto y el comando de suspensión obtiene un nuevo PID (8541).
807
o cron
y la misma línea se volvería a acortar, así como a más niños si se genera. Pero la pregunta era sobre encontrar al padre, no a todos los hijos.
1
. No creo que puedas matar el PID 1.
ps -efj
También se puede utilizar para lo mismo.
Por ejemplo,
> ps -efj | head
UID PID PPID PGID SID C STIME TTY TIME CMD
root 1 0 1 1 0 Jul01 ? 00:00:13 /sbin/init splash
root 2 0 0 0 0 Jul01 ? 00:00:00 [kthreadd]
root 3 2 0 0 0 Jul01 ? 00:00:02 [ksoftirqd/0]
root 5 2 0 0 0 Jul01 ? 00:00:00 [kworker/0:0H]
root 7 2 0 0 0 Jul01 ? 00:06:44 [rcu_sched]
root 8 2 0 0 0 Jul01 ? 00:00:00 [rcu_bh]
root 9 2 0 0 0 Jul01 ? 00:00:00 [migration/0]
root 10 2 0 0 0 Jul01 ? 00:00:08 [watchdog/0]
root 11 2 0 0 0 Jul01 ? 00:00:08 [watchdog/1]
ps -o args ...
en los resultados, pero eso tiene un poco de olor.