No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Manejo de procesos

27/30
Recursos

Aportes 16

Preguntas 0

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

kill <OPTION> <PID>     

# Envia una señal al proceso con el ID especificado, por defecto SIGTERM
-1             
# SIGHUP, reinicia el proceso

-2             
# SIGINT, interrumpe el proceso

-9             
# SIGKILL, termina el proceso de manera forzosa

-15           
 # SIGTERM, termina el proceso de manera normal <opción por defecto>

-19           
 # SIGSTOP, pausa el proceso

-18            
# SIGCONT, reanuda el proceso

Estados de un proceso

  • Running or runnable ®: procesos que al ejecutarse se encuentran consumiendo recursos (de memoria o CPU). Cuando no esta en este estado, generalmente debido a que los recursos que el proceso requiere no están disponibles o están siendo usados por otro proceso, se dice que el proceso esta ‘durmiendo’ (sleep), pero hay dos tipos de estados de ‘dormir’ o de ‘sleep’: interrumpible y no interrumpible. El proceso sale del estado de ‘sueño’ al tener acceso a los recursos que necesita para continuar ejecutándose.
  • Uninterruptible Sleep (D): Este tipo de proceso no se pueden matar con una señal simple, ya que debe usarse una ‘sign kill’ para matar el proceso y que corresponde a un tipo de señal en particular.
  • Interruptible Sleep (S): Son procesos que pueden interrumpirse con señales normales siempre y cuando se encuentren en espera. Es importante recordar que las señales son mecanismos que permiten al sistema terminar con procesos de forma ‘amigable’ y sin repercusiones para su funcionamiento.
  • Stopped (T): Se refiere a procesos que han sido detenidos temporal o indefinidamente por un usuario. Se diferencia del estado en ‘sleep’ en el hecho de que un proceso que esta durmiendo sale de este estado al detectar que los recursos que necesita ya están disponibles.
  • Zombie (Z): Es un estado correspondiente a los proceso que están desvinculados de su proceso ‘padre’ y que no están ejecutándose.

Manejo de Procesos en Terminal

  1. Al colocar el símbolo ‘&’ al final de un comando, esté se sigue ejecutando en segundo plano. Ejemplo:
less archivo.txt &

Cuando un proceso pasa a segundo plano, se le añade un número identificador que sirve para manejar su estado (llamado ‘job ID’).

  1. Es posible usar el comando jobs -l para ver los procesos ejecutándose en segundo plano:
jobs -l 
  1. Para traer un proceso a 1er plano, se usa ‘fg’ más el identificador de trabajo del proceso (llamado regularmente ‘job ID’) en segundo plano:
fg job_ID
  1. Otra forma de enviar un proceso a segundo plano o background es usando CTRL + Z. Sin embargo, al usar esta opción, el proceso es enviado a segundo plano en estado de ‘detenido’ o ‘stopped’.

Ejemplo de ejecución en terminal:

  1. También es posible matar un proceso con el comando kill más el PID del proceso. Si el proceso esta en background, no funciona usar kill sin argumentos.
kill PID
  1. Matar un proceso en segundo plano:
kill -s SIGKILL [PID]
  1. Matar todos los procesos asociados a un comando o término:
killall [nombre_proceso]

Listado de opciones de señales más comunes para kill

Formato:

kill <OPTION> <PID>     

# Envia una señal al proceso con el ID especificado, por defecto SIGTERM

Opciones:

-1             
# SIGHUP, reinicia el proceso

-2             
# SIGINT, interrumpe el proceso

-9             
# SIGKILL, termina el proceso de manera forzosa

-15           
 # SIGTERM, termina el proceso de manera normal <opción por defecto>

-19           
 # SIGSTOP, pausa el proceso

-18            
# SIGCONT, reanuda el proceso

Manejo de procesos

El process id nos sirve para identificar el software que se está manejando, pero también nos permite acabarlo, pausarlo, reiniciarlo, etc.

Estados de un proceso

  • Running or runnable ®
  • Uninterruptible sleep (D)
  • Interruptible Sleep (S)
  • Stopped (T)
  • Zombie (Z)

Tip: Para enviar un archivo o proceso a segundo plano solo debes añadir & al final de cada comando o cerrar el proceso con ctrl + Z.

Para mirar los jobs o procesos abiertos en segundo plano también puedes usar:

jobs -l

Por otro lado, el comando:

fg [PID]

Nos permite volver a primer plano los procesos secundarios.

Finalmente, para poder matar un proceso, debemos tener claro el process id, que podemos obtener por medio de htop. Luego, ejecutamos el comando:

kill [PID]

Pero si el proceso está en segundo plano, deberemos añadir lo siguiente:

kill -s SIGKILL [PID]

Por otro lado, si lo que deseamos es matar todos los procesos asociados a un programa, podemos hacerlo con el siguiente comando

En vez de espera.txt le hubiera puesto lazaro.txt

comandos kill

Muy buena clase. Excelente información con la herramienta y el uso de conceptos sobre como terminar un programa

Por simple curiosidad, en mi terminal de Ubuntu estaba corriendo htop
Busqué su PID y en otra terminal, en la misma sesión de Ubuntu, hice kill -9 PID y la interfaz visual de htop no se cerró pero sí dejó de mostrar sus cambios.

Kill : Envia una señal a uno o mas procesos.
la señal puede ser indicada con numero o palabra y el proceso se identifica a traves de su PID o su nombre tambien.
Ejemplo: kill -9 1034
Envia una señal (SIGKILL) para terminar el proceso numero 1034
sino especificamos y solo ponemos kill numero de proceso enviara la señal por defecto SIGTERM (-15) es una señal “amable” por asi decirlo pero puede ser ignorada.
Si tenemos un proceso corriendo y presionamos Ctrl+z lo que hace es poner el proceso en STOP y podemos verlo usando jobs donde nos mostrara el proceso con su numero de PID y la palabra Stopped (suspendido).
El listado de señales esta puesto mas abajo por otro compañero.

Un pequeño aporte, si estás en producción ten encuenta que kill -9 PID, matará el proceso, pero nosotros por seguridad utilizamos kill -15 PID, para que valla finalizando procesos que vayan terminando o finalizando por si solos, solo debes darle un poco más de espera.
Si les sale ((fg: job not found: 1)), intenten con **fg %1**
1. **Running (Ejecutando)** * **Símbolo:** R * **Significado:** El proceso está actualmente ejecutándose o está listo para ejecutarse en la CPU. 2. **Sleeping (Durmiendo)** * **Símbolo:** S * **Significado:** El proceso está en espera de un evento o recurso (como entrada/salida) y no está ejecutándose activamente. 3. **Uninterruptible Sleep (Sueño ininterrumpible)** * **Símbolo:** D * **Significado:** El proceso está esperando un evento específico, como una operación de hardware, y no puede ser interrumpido hasta que dicho evento ocurra. 4. **Stopped (Detenido)** * **Símbolo:** T * **Significado:** El proceso ha sido detenido por una señal de control, como una pausa (usualmente por el comando `kill -STOP`), y no está ejecutándose. 5. **Zombie (Zombi)** * **Símbolo:** Z * **Significado:** El proceso ha terminado su ejecución, pero su entrada en la tabla de procesos aún no ha sido limpiada por su proceso padre. Es un proceso que ya no está activo, pero aún ocupa una entrada en la tabla de procesos. 6. **Idle (Inactivo)** * **Símbolo:** I * **Significado:** El proceso está en espera de trabajo (generalmente usado para procesos de kernel). Este estado no es siempre mostrado por todas las herramientas de monitoreo.
**ESTADOS DE LOS PROCESOS EN LINUX**     **Running o Runnable (R)**         Activado cuando el proceso está consumiendo recursos de CPU o memoria.         Si no está consumiendo recursos, entra en estado de espera ("sleep").     **Sleep**         Interrumpible: El proceso puede ser pausado y retomado.         No interrumpible (D): No puede ser terminado fácilmente. Se usa la señal "SIGKILL" para terminarlo.     **Stopped (T)**         El proceso está pausado y no se reanudará hasta que se le indique, independientemente de la disponibilidad de recursos.     **Zombie (Z)**         El proceso ha terminado, pero aún no ha sido recogido por su proceso padre. **USO DE LA TERMINAL PARA GESTIONAR PROCESOS** **ENVIAR UN PROCESO A BACKGROUND**     Ejecutar un Comando en Background: * less espera.txt &     Listar Procesos en Background: * jobs -l     Traer un Proceso a Foreground: * fg %1 **ESTADOS Y CONTROL DE PROCESOS**     Enviar a Background con Control+Z: * Pausa el proceso actual y lo envía a background.     Verificar el Estado con htop: * Utiliza htop para ver los procesos y su estado. * Buscar con F3 y ver el estado "stopped" o "sleep". **TERMINAR PROCESOS**     Matar un Proceso por su PID: * kill 1402     Matar un Proceso en Background: * kill -s SIGKILL 1478 **USAR HTOP PARA TERMINAR PROCESOS**     Ejecutar htop: * sudo htop     Buscar el Proceso y Terminarlo: * Buscar con F3. * Terminar con F9 y elegir la señal apropiada (15 para SIGTERM, 9 para SIGKILL). **COMANDOS ADICIONALES**     Matar Todos los Procesos Asociados a un Nombre: * killall less
Estados de un proceso: \- Running o runnable, R, se activa en cualquier proceso que consume recursos de cpu o memoria \- Uninterruptible sleep, D, no puede ser matado con señales básicas de kill. La señal que se usa para este es sigkill. \- Interruptible sleep, S, que esta activo, pero que no está consumiendo ningún recurso de la cpu o de la memoria. \- Stopped, T, sleep siempre esta a la espera de que se liberen recursos para ser ejectuados de nuevo, mientras que stopped si nosotros liberamos recursos igual se quedan ahí sin ejecutar. \- Zombie, Z, se activa cuando queremos terminar un proceso y se desvincula del proceso original.

Matar todos los procesos: kill all nombreproceso

Matar proceso: kill -9 PID

Fue interesante el aprendizaje y recuerdos de eliminar procesos. Sabia que el primer metodo era sencillo, pero no imagine que habia mas metodos y mas ese metodo de “killall” me dejo impresionado. Espero esa siguiente clase con todo.