Qué es un proceso
Un proceso, también conocido como tarea, es la forma en ejecución de un programa. Los programas se almacenan en el disco y los procesos se ejecutan en la memoria. Los procesos tienen una relación padre/hijo. Un proceso puede generar uno o más hijos. Se pueden ejecutar varios procesos en paralelo.
Listado de Procesos del Sistema
El comando de estado del proceso (ps) enumera los procesos que están asociados con su shell.
# ps [options]
Para cada proceso, el comando ps muestra el PID , el identificador del terminal (TTY ), el tiempo de ejecución acumulativo (TIME ), y el nombre del comando (CMD ). Por ejemplo, enumere los procesos que se están ejecutando actualmente en el sistema mediante el comando ps.
# ps PID TTY TIME CMD 1442 pts/1 00:00:00 sudo 1448 pts/1 00:00:00 su 1449 pts/1 00:00:00 bash 1666 pts/1 00:00:00 ps
El comando ps tiene varias opciones que puede usar para mostrar información adicional del proceso.
- -a :Imprime información sobre todos los procesos solicitados con más frecuencia, excepto los líderes de grupo de procesos y los procesos no asociados con una terminal
- -e :Imprime información sobre cada proceso que se está ejecutando actualmente
- -f :genera una lista completa
- -l :Genera una lista larga
- formato -o :Escribe información de acuerdo con la especificación de formato dada en un formato. Se pueden especificar varias opciones -o. La especificación de formato se interpreta como la concatenación separada por espacios y caracteres de todos los argumentos de opción de formato.
Listado de todos los procesos
Por ejemplo, use el 'ps -ef ‘ Comando para enumerar todos los procesos actualmente programados para ejecutarse en el sistema.
# ps -ef | more
Aquí,
- UID :El nombre de usuario del propietario del proceso
- PID :El número de identificación de proceso único del proceso
- PPID :El número de identificación del proceso principal del proceso
- STIME :La hora en que comenzó el proceso (hh:mm:ss)
- TTY :El terminal de control del proceso. Tenga en cuenta que los procesos del sistema (demonios) muestran un signo de interrogación (?), lo que indica que el proceso se inició sin el uso de una terminal.
- TIEMPO :El tiempo de ejecución acumulativo para el proceso
- CMD :el nombre del comando, las opciones y los argumentos
Terminación de un proceso
Puede haber momentos en los que necesite finalizar un proceso no deseado. Es posible que un proceso haya entrado en un bucle sin fin o que se haya colgado. Puede matar o detener cualquier proceso que posea. Puede usar los siguientes dos comandos para terminar uno o más procesos:
– kill
– pkill
Los comandos kill y pkill envían señales a los procesos indicándoles que finalicen. Cada señal tiene un número, un nombre y un evento asociado. A continuación se muestran algunas de las señales más utilizadas con sus funcionalidades.
Número | Nombre | Descripción |
---|---|---|
1 | SUSCRIBIR | Recargar archivo de configuración |
2 | SIGINT | Interrupción por teclado (ctrl+c) |
9 | SIGKILL | proceso de eliminación |
15 | SIGTERM | Finalice el proceso inmediatamente. (Termine un proceso de manera controlada para que sea posible la limpieza) |
18 | CONT SIGNO | Continuar el proceso detenido con STOP |
19 | DETENER | Detener proceso |
Terminar un proceso usando el comando kill
Puede finalizar cualquier proceso emitiendo la señal adecuada al proceso en cuestión. El comando de matar envía la señal 15, la señal de terminación, por defecto. Esta señal hace que el proceso termine de manera ordenada. El comando kill envía una señal de terminación a uno o más procesos. La sintaxis para usar el comando matar es la siguiente:
# kill [-signal] PIDsNota :El comando kill finaliza solo aquellos procesos que son de su propiedad. El usuario root puede usar el comando kill en cualquier proceso.
Debe conocer el PID del proceso antes de poder finalizarlo. Puede usar el comando ps o pgrep para ubicar el PID del proceso. Además, puede finalizar varios procesos al mismo tiempo ingresando varios PID en una sola línea de comando. Veamos un ejemplo de comando de matar. Mataríamos el proceso 'dormir 400' como se muestra a continuación.
# ps -ef | grep sleep root 1337 1218 0 07:33 pts/0 00:00:00 sleep 400
# kill -9 1337
# ps -ef | grep sleep #
Terminar un proceso usando el comando pkill o killall
Alternativamente, puede usar el comando pkill o killall para enviar una señal de finalización a los procesos.
# pkill [-options] PIDs
o
# killall [-options] PIDs
El comando pkill/killall requiere que especifique el nombre en lugar del PID del proceso. Por ejemplo, use el comando pkill para terminar el proceso de dtmail.
# pkill dtmail # pgrep -l mail #
Terminación forzosa de un proceso:Señal 9
Algunos procesos ignoran la señal predeterminada 15 que envía el comando kill. Si un proceso no responde a la señal 15, puede obligarlo a terminar usando la señal 9 con el comando kill o pkill.
# kill -9 PID
o
# pkill -9 process_nameNota :El envío de la señal 15 no necesariamente elimina correctamente un proceso. Solo si la señal es captada por el proceso, se limpia en orden y muere. Si no, simplemente muere.