¿Cómo obtener padres pid de un niño pid pid?
Sé que puedo verificarlo manualmente en / proc, me pregunto si hay una manera inteligente / mejor de lograr esto en Ubuntu. Tenga en cuenta que el padre puede o no ser asesinado.
Gracias
command-line
bash
process
cache
fuente
fuente

ps -o args ...en los resultados, pero eso tiene un poco de olor.ppid=pero antes del pid parece ser necesario. Obtuve resultados diferentes si lo omití.Usando solo la variable de shell para obtener el PID primario:
si necesita el comando de este padre pid:
si necesita la línea de comando completa (con todas las opciones):
Explicación
$PPIDestá definido por el shell, es el PID del proceso padre/proc/, tienes algunos directorios con el PID de cada proceso. Entonces, si ustedcat /proc/$PPID/comm, se hace eco del nombre del comando del PIDComprobar hombre proc
fuente
PPIDse 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/…Utilizando
pstreepor nombre de comandoUtilizando
pstreepuede 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:En este caso
sleepes el comando hijo y su PID es8414. Su identificación principal es 841 y se llamadisplay-auto-brightness. El abuelo es un shell (sh) con un ID de proceso de839. El bisabuelo tienecronuna identificación de proceso de795. El tatarabuelo tambiéncrontiene un ID de proceso763.Si desea buscar por ID de proceso en
sleeplugar de nombre, puede usar:Observe que la
sleepID del proceso cambió a14653. El padre (PID 841) duerme durante 1 minuto, se despierta por una fracción de segundo y luego inicia un nuevosleepcomando que obtiene una nueva ID de proceso. Esta es otra razón por la cual buscarsleepes 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:
Nota: Ha pasado otro minuto y el comando de suspensión obtiene un nuevo PID (8541).
fuente
807ocrony 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 -efjTambién se puede utilizar para lo mismo.Por ejemplo,
fuente