En nuestro post anterior hablamos sobre las señales en Linux. También explicamos lo que sucede cuando se envía una de ellas a un proceso mediante los comandos kill
o killall
. Por otro lado, programas como top
utilizan la información disponible en /proc para mostrarnos detalles sobre los procesos que se están ejecutando en nuestro sistema. En esta ocasión veremos cómo acceder a más info sobre procesos utilizando estos recursos.
Info sobre procesos en Linux
Para empezar, tomemos como ejemplo el proceso con PID 3905, el cual iniciamos utilizando el siguiente comando:
yes > /dev/null
Para retomar el control de la terminal, presionamos la combinación de teclas Ctrl + z. A continuación, podremos observar que el proceso ha sido detenido:
[1]+ Stopped yes > /dev/null
Sin embargo, el mismo continúa presente en la tabla de procesos. Podemos verificarlo con
ps --pid=3905
o utilizando top
, como vemos en la Fig. 1:
Es importante aclarar que el hecho de que un proceso esté detenido no significa que esté muerto.
Dentro del directorio /proc/3905 hallaremos más información sobre el proceso en cuestión. Entre otras cosas, el archivo status nos detalla el nombre del proceso, su estado, el PPID, entre otras cosas. Otro ítem de interés es el enlace simbólico llamado exe. Si hacemos file /proc/3905/exe
, accederemos al archivo ejecutable asociado al proceso (en este caso /usr/bin/yes).
¿Cómo reiniciar un proceso detenido?
No habría mucho propósito en mantener la entrada correspondiente en la tabla de procesos si no hubiera una manera de hacer que el proceso detenido retome su ejecución. Por eso, podemos utilizar el comando kill como de costumbre pero enviando la señal 18 (SIGCONT).
Luego de ejecutar el siguiente comando
kill -s SIGCONT 3905
consultemos /proc/3905/status cuál es el nuevo estado del proceso (ver Fig. 2):
head -n 3 /proc/3905/status
Espero que este post les haya resultado útil. ¡Nos leemos en breve!
¡Aprovechá la oportunidad de suscribirte al blog para recibir en tu correo el post nuestro de cada día, novedades, y promociones exclusivas!