
Puedo ver el proceso en segundo plano usando ps. Pero, ¿hay alguna forma de ver el proceso en primer plano? Por ejemplo,
$nohup proceso1 &
entonces
ps -ef | grep "proceso1"
mostraría el proceso "proceso1" en ejecución. Pero el comando anterior no mostraría un proceso en primer plano ejecutado como,
$proceso2
Respuesta1
Puede que te sientas confundido porque ps
por defecto te muestra los procesos que están en el mismo terminal donde ps
se invoca, por ejemplo, procesos iniciados desde la misma ventana del terminal.
Pruebe ps -u $LOGNAME
o si conoce los nombres de los terminales ps -t $THETTYNAME1,$THETTYNAME2
. (Los nombres de los terminales normalmente parecen "ttyN" o "pts/N").
Respuesta2
Qué extraño, el comando ps te permite monitorear el estado de todos los procesos activos, tanto en primer plano como en segundo plano.
Por ejemplo, comienzo el siguiente proceso en un primer shell:
$ startNetworkServer
Security manager installed using the Basic server security policy.
Apache Derby Network Server - 10.3.2.1 - (599110) started and ready to accept connections on port 1527 at 2010-06-18 14:14:33.277 GMT
Y en otro caparazón:
$ ps aux | grep NetworkServer | grep -v grep
pascal 5928 0.3 1.4 661492 29216 pts/0 Sl+ 16:14 0:03 /usr/lib/jvm/java-6-sun/bin/java -classpath /usr/share/javadb/lib/derby.jar:/usr/share/javadb/lib/derbynet.jar:/usr/share/javadb/lib/derbytools.jar:/usr/share/javadb/lib/derbyclient.jar org.apache.derby.drda.NetworkServerControl start
El proceso aparece como se esperaba (y +
muestra que está en el grupo de procesos de primer plano).
Respuesta3
La pregunta:
"¿Hay alguna manera de ver el proceso en primer plano?"Luego, la pregunta continúa afirmando que ps -ef
no muestra los procesos ejecutándose en primer plano.
Respuesta:
Sí, Hay una manera. También:ps -ef
hacemostrar procesos ejecutándose en primer plano -pero no muestra elestadode los procesos. Esto se explica en la documentación ( man ps
) y se puede verificar con un experimento sencillo. Considere este ejemplo:
En una terminal, ejecute:
ping 8.8.8.8 > /dev/null
En otra terminal:
ps -ef | grep ping | grep -v grep
seamus 1161 974 0 23:20 pts/1 00:00:00 ping 8.8.8.8
Tenga en cuenta que ps -ef
no proporcionaestadoinformación en su salida. Sin embargo, man ps
explica queestadoinformaciónestá disponibleusando el -o
argumento cuando se combina con la palabra clave stat
:
ps -eo pid,stat,command | grep ping | grep -v grep
1161 S+ ping 8.8.8.8
Lo que nos dice:
- el PID del proceso es
1161
mediante palabra clavepid
- el procesoestadoes
S+
a través de palabra clavestat
- la
command
palabra clave muestraping 8.8.8.8
generó el proceso
Elestadovalor de S+
esdescifradobajo man ps
el título de PROCESS STATE CODE
. que nos dice:
S suspensión interrumpible (esperando a que se complete un evento)
+ está en el grupo de procesos de primer plano
QED
Hemos visto que ps -ef
enumera el proceso cuyo PID es 1161
, y que ps -eo pid,stat,command
revela elestadode PID 1161
para ser unprimer planoproceso.
NOTA 1: palabras clavePara el -o
argumento se describen man ps
bajo el título STANDARD FORMAT SPECIFIERS
. Aquí se explica que la palabra clave stat
produce el proceso de dos caracteres.estado, mientras que la palabra clave state
produce solo un carácterestado.
NOTA 2:Esto funciona en mi sistema basado en Debian (reportado como versión ps from procps-ng 3.3.15
) y en macOS 10.15 (que desciende de la versión BSD de ps
).