Ver el proceso en primer plano usando ps

Ver el proceso en primer plano usando ps

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 pspor defecto te muestra los procesos que están en el mismo terminal donde psse invoca, por ejemplo, procesos iniciados desde la misma ventana del terminal.

Pruebe ps -u $LOGNAMEo 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 -efno muestra los procesos ejecutándose en primer plano.

Respuesta:

, 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 -efno proporcionaestadoinformación en su salida. Sin embargo, man psexplica queestadoinformaciónestá disponibleusando el -oargumento 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 1161mediante palabra clavepid
  • el procesoestadoes S+a través de palabra clavestat
  • la commandpalabra clave muestra ping 8.8.8.8generó el proceso

Elestadovalor de S+esdescifradobajo man psel 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 -efenumera el proceso cuyo PID es 1161, y que ps -eo pid,stat,commandrevela elestadode PID 1161para ser unprimer planoproceso.


NOTA 1: palabras clavePara el -oargumento se describen man psbajo el título STANDARD FORMAT SPECIFIERS. Aquí se explica que la palabra clave statproduce el proceso de dos caracteres.estado, mientras que la palabra clave stateproduce 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).

información relacionada