what sheet script es6 cheatsheet cheat bash background pid

sheet - Cómo enumerar todos los pids de fondo en bash



vim cheat sheet (4)

¡O no soy capaz de expresar mi búsqueda correctamente o la respuesta no es fácil de encontrar !, pero estoy tratando de encontrar la manera de enumerar todos mis PID de fondo. Por ejemplo:

Hasta ahora, he encontrado que para enumerar el último PID que utilizamos:

$!

Pero ahora quiero enumerar el PID de la tarea anterior (si existe), pero no puedo encontrar cómo hacerlo. De todos modos, quiero enumerar todos mis PID de la tarea de fondo.

Sé que también podemos encontrar la última identificación de trabajo con:

%% (last job in list) %1 (first job in list) %2 (second job in list)

Pero lo mismo no parece funcionar para la identificación del proceso?

Gracias a todos :)


Pero lo mismo no parece funcionar para la identificación del proceso?

Puede intentar jobs -l o -p . Los conmutadores -l y -p hacen que el comando de jobs también muestre ID de proceso.


En bash, como en tcsh, el comando que probablemente desee es jobs -l (for Long).

[ghoti@pc ~]$ sleep 300 & [1] 33811 [ghoti@pc ~]$ sleep 301 & [2] 33812 [ghoti@pc ~]$ sleep 302 & [3] 33813 [ghoti@pc ~]$ jobs -l [1]- 33811 Running sleep 300 & [2]- 33812 Running sleep 301 & [3]+ 33813 Running sleep 302 & [ghoti@pc ~]$


Si también desea ver los procesos de su hijo que ya no se tratan como un trabajo por el shell (por ejemplo, porque los disown deliberadamente o similar), puede utilizar esto para buscar todos los procesos que lo tienen como su padre:

grep "PPid:.*$$" /proc/[0-9]*/status | cut -d/ -f3

también

ps --ppid $$

puede ser de uso. (Créditos a @Michael Kazarian quien también tiene una respuesta aquí).


Use ps S Por ejemplo:

$ vim & [1] 8263 $ ipython & [2] 8264 $ ps S PID TTY STAT TIME COMMAND 3082 pts/0 Ss 0:00 bash 3137 pts/0 Sl+ 0:00 python /usr/bin/ipython 8207 pts/2 Ss 0:00 bash 8263 pts/2 T 0:00 vim 8264 pts/2 Tl 0:00 python /usr/bin/ipython 8284 pts/2 Tl 0:00 python /usr/bin/ipython 8355 pts/2 R+ 0:00 ps S

Si desea obtener PID, use a continuación:

$ ps S | awk ''{print $ 1 }'' | grep -E ''[0-9]'' 3082 3137 8207 8263 8264 8284 8357 8358 835

También puede usar jobs -l Pero muestra procesos en segundo plano solo para la sesión actual.