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.