17. Visualización de procesos
Ejecutar un comando da como resultado algo llamado proceso. En el sistema operativo Linux, los procesos se ejecutan en función de los privilegios del usuario que ejecuta el comando. Esto permite que los procesos se limiten a ciertas funciones dependiendo de la identidad del usuario.
Aunque hay excepciones, generalmente el sistema operativo diferenciará entre los usuarios en función de si son o no el administrador. Normalmente, los usuarios habituales, como el usuario sysadmin
, no pueden controlar los procesos de otro usuario. Los usuarios que tienen privilegios administrativos, como la cuenta root
, pueden controlar cualquier proceso de cualquier usuario, incluyendo la detención de cualquier proceso.
El comando ps
se puede utilizar para enumerar los procesos.
ps [OPCIONES]
sysadmin@localhost:~$ ps PID TTY TIME CMD 80 pts/0 00:00:00 bash 94 pts/0 00:00:00 ps
Por defecto, el comando ps
mostrará los procesos que se están ejecutando en la terminal actual. En el ejemplo anterior, la última línea corresponde al proceso generado al ejecutar el comando ps
. La salida incluye las siguientes columnas de información:
PID
: El identificador para el proceso (process identifier), el cual es único para cada proceso. Esta información es útil cuando necesitamos controlar los procesos según su número identificador (ID).TTY
: El nombre de la terminal en la que está funcionando el proceso. Esta información es útil para distinguir entre diferentes procesos que tienen el mismo nombre.TIME
: La cantidad total de tiempo de procesado que utiliza un proceso determinado. Normalmente, los usuarios normales no utilizan esta información.CMD
: El comando que inició el proceso.
En lugar de ver sólo los procesos que se están ejecutando en la terminal actual, los usuarios pueden querer ver todos los procesos que se están ejecutando en el sistema. La opción -e
muestra todos estos procesos:
sysadmin@localhost:~$ ps -e PID TTY TIME CMD 1 pts/0 00:00:00 init 33 ? 00:00:00 rsyslogd 37 ? 00:00:00 cron 39 ? 00:00:00 sshd 56 ? 00:00:00 named 69 pts/0 00:00:00 login 79 pts/0 00:00:00 bash 94 pts/0 00:00:00 ps
Muchas veces se puede utilizar la opción -f
para proporcionar un resultado más detallado que incluya las opciones y los argumentos de cada proceso. Localice el comando ps
en la última línea, la columna CMD
ahora incluye las opciones utilizadas con el comando:
sysadmin@localhost:~$ ps -ef UID PID PPID C STIME TTY TIME CMD root 1 0 0 19:16 pts/0 00:00:00 /sbin??? /init syslog 33 1 0 19:16 ? 00:00:00 /usr/sbin/rsyslogd root 37 1 0 19:16 ? 00:00:00 /usr/sbin/cron root 39 1 0 19:16 ? 00:00:00 /usr/sbin/sshd bind 56 1 0 19:16 ? 00:00:00 /usr/sbin/named -u bind root 69 1 0 19:16 pts/0 00:00:00 /bin/login -f sysadmin 79 69 0 19:16 pts/0 00:00:00 -bash sysadmin 95 79 0 19:43 pts/0 00:00:00 ps -ef