{"id":25103,"date":"2020-01-10T13:12:31","date_gmt":"2020-01-10T12:12:31","guid":{"rendered":"https:\/\/eltallerdelbit.com\/?p=25103"},"modified":"2020-09-02T10:59:11","modified_gmt":"2020-09-02T08:59:11","slug":"estados-de-los-procesos-en-linux","status":"publish","type":"post","link":"https:\/\/eltallerdelbit.com\/estados-de-los-procesos-en-linux\/","title":{"rendered":"Estados de los procesos en Linux"},"content":{"rendered":"
\nEn este art\u00edculo:<\/p>\n
<\/p>\n
<\/p>\n
<\/p>\n
Con el comando<\/p>\n
man ps<\/pre>\npodemos ver el manual completo sobre el comando ps<\/em><\/strong>; este comando muestra una captura de los procesos actuales.
\n <\/p>\nOpciones del comando ps<\/em> (mostrar los procesos actuales del sistema)<\/span><\/h3>\n <\/p>\n
Primero, las opciones b\u00e1sicas del comando ps<\/span><\/p>\ncon:<\/p>\n
ps --help simple<\/pre>\no<\/p>\n
ps --ayuda simple<\/pre>\n-A, -e todos los procesos
\n-a todos con tty, a excepci\u00f3n de los lideres de la sesi\u00f3n, a todos con tty, incluyendo los otros usuarios
\n-d, todos a excepci\u00f3n de los lideres de la sesi\u00f3n
\n-N, –anular negar la selecci\u00f3n
\nr s\u00f3lo los procesos que se ejecutan
\nT s\u00f3lo los procesos en este terminal
\nx control de procesos sin ttys
\n
\n
\n <\/p>\n
Para mostrar otras opciones del comando ps<\/em> tenemos estos par\u00e1metros: <\/span><\/p>\n <\/p>\n
ps --help simple|list|output|threads|misc|all<\/pre>\n <\/p>\n
Si el idioma de tu distro Linux est\u00e1 en espa\u00f1ol, entonces ser\u00e1 por ejemplo:<\/p>\n
ps --ayuda simple<\/pre>\no<\/p>\n
ps --ayuda lista<\/pre>\n <\/p>\n
Y aqu\u00ed la tabla en Ingles:<\/p>\n
ps --help<\/pre>\n <\/p>\n
********* simple selection *********<\/p>\n
-A all processes
\n-N negate selection
\n-a all w\/ tty except session leaders
\n-d all except session leaders
\n-e all processes
\nT all processes on this terminal
\na all w\/ tty, including other users
\ng OBSOLETE — DO NOT USE
\nr only running processes
\nx processes w\/o controlling<\/p>\n
<\/p>\n
********* selection by list *********<\/p>\n
-C by command name
\n-G by real group ID (supports names)
\n-U by real user ID (supports names)
\n-g by session OR by effective group name
\n-p by process ID
\n-s processes in the sessions given
\n-t by tty
\n-u by effective user ID (supports names)
\nU processes for specified users
\nttys t by tty
\n
\n
\n <\/p>\n
Estados de un proceso que mostrar\u00e1 la columna STATUS del comando ps<\/span><\/h3>\n <\/p>\n
D\u00a0 \u00a0Uninterruptible<\/span> <\/em>sleep<\/em> – (<\/span>En pausa ininterrumpible). Por ejemplo por alguna operaci\u00f3n IO.<\/p>\nR\u00a0 \u00a0Running<\/em> – el proceso se encuentra ejecut\u00e1ndose<\/p>\nS\u00a0 \u00a0interruptible<\/span> <\/em>sleep <\/em><\/span>Pausa interrumpible (espera que se complete un evento )<\/p>\nT\u00a0 \u00a0Stopped<\/em> parado<\/p>\nX\u00a0 \u00a0Dead – muerto. Esto nunca deber\u00edamos verlo, ya que si el proceso est\u00e1 muerto, no aparecer\u00e1 ..<\/p>\n
Z\u00a0 \u00a0Defunct<\/em>\u00a0 -Proceso Zombie, terminado pero su proceso padre sigue vivo, y no ha detectado que el proceso ya muri\u00f3.<\/p>\n<\/p>\n
<\/p>\n
Adem\u00e1s de los estados (columna STAT<\/em>, representada por la S<\/em> may\u00fascula), podremos ver las columnas:<\/span><\/h4>\n <\/p>\n
\n- PID\u00a0 n\u00famero identificador del proceso<\/li>\n
- T\u00a0 \u00a0tiempo de uso de la cpu que ha acumulado el proceso<\/li>\n
- TTY\u00a0 \u00a0terminal asociada al proceso<\/li>\n
- NI\u00a0 valor NICE del proceso (su prioridad).<\/li>\n<\/ul>\n
Realmente existen m\u00e1s columnas en el listado de procesos<\/a>.<\/p>\n <\/p>\n
SI ejecutamos ps aux<\/em><\/strong>, podremos ver m\u00e1s procesos del sistema y otros detalles:<\/p>\n
\nExplicaci\u00f3n del comando ps<\/em> y los par\u00e1metros aux<\/em>:<\/p>\n\n- a\u00a0 :\u00a0 muestra todos los procesos en ejecuci\u00f3n, incluso los de otros usuarios.<\/li>\n
- u\u00a0 :\u00a0 muestra m\u00e1s detalles sobre los procesos.<\/li>\n
- x\u00a0 :\u00a0 muestra procesos que no tienen asociada una TTY<\/em>.<\/li>\n<\/ul>\n
<\/p>\n
<\/p>\n
Otras columnas que vemos al ejecutar el comando ps aux<\/span><\/h4>\n
\nEn la captura anterior podemos apreciar que se pueden ver otras columnas que previamente, con el comando ps -S, no ve\u00edamos:<\/p>\n
\n- USER<\/em>\u00a0 : el usuario efectivo (el usuario con el que estamos accediendo).<\/li>\n
- PID<\/em>\u00a0 : la ID del proceso.<\/li>\n
- %CPU<\/em>\u00a0 : tiempo de la CPU utilizado, dividido por el tiempo que el proceso ha estado ejecut\u00e1ndose.<\/li>\n
- %MEM<\/em>\u00a0 : relaci\u00f3n entre el tama\u00f1o del proceso y la memoria f\u00edsica de la m\u00e1quina.<\/li>\n
- VSZ<\/em>\u00a0 :\u00a0 uso de memoria virtual del proceso.<\/li>\n
- RSS<\/em>\u00a0 :\u00a0 la memoria f\u00edsica (no SWAP) que un proceso ha utilizado.<\/li>\n
- TTY<\/em>\u00a0 :\u00a0 terminal de control asociada con el proceso.<\/li>\n
- STAT<\/em>\u00a0 :\u00a0 c\u00f3digo de estado del proceso.<\/li>\n
- START<\/em>\u00a0 :\u00a0 hora de inicio del proceso.<\/li>\n
- TIME<\/em>\u00a0 :\u00a0 tiempo total de uso de la CPU.<\/li>\n
- COMMAND<\/em>\u00a0 :\u00a0 \u00a0nombre del ejecutable\/comando.<\/li>\n<\/ul>\n
\n
\n <\/p>\n
Ejemplos de Estados de un proceso <\/span><\/h3>\n
\nVamos a intentar comprender los diferentes estados.<\/p>\n
Comenzamos listando los procesos existentes y sus estados mediante el comando:<\/p>\n
ps -S<\/pre>\n<\/p>\n
<\/p>\n
\n- Vemos que el estado S muestra una pausa interrumpible<\/li>\n
- Aqu\u00ed nuestro bash shell est\u00e1 esperando que se complete su hijo 31639<\/li>\n
- el proceso n\u00famero 31639 est\u00e1 en estado de ejecuci\u00f3n<\/li>\n
- s , muestra que espera al lider de la sesi\u00f3n<\/li>\n
- + muestra que 31639 est\u00e1 corriendo en primer plano<\/li>\n<\/ul>\n
<\/p>\n
<\/p>\n
Ahora vamos a generar un retraso con el comando sleep:<\/p>\n
sleep +30<\/pre>\ny a continuaci\u00f3n pulsamos Ctrl + Z, con lo que enviaremos la se\u00f1al SIGSTOP<\/em><\/a>.<\/p>\nPodemos ver claramente el Status T<\/p>\n
<\/p>\n
El proceso est\u00e1 parado pero no terminado.<\/p>\n
Podemos continuar este proceso parado.<\/p>\n
<\/p>\n