Ya hemos discutido el comando de eliminación que puede usar en caso de que desee finalizar procesos en Linux. Sin embargo, existe otra utilidad de línea de comandos que puede usar para el mismo propósito:killall . En este tutorial, discutiremos los conceptos básicos de este comando utilizando algunos ejemplos fáciles de entender.
Pero antes de hacerlo, vale la pena mencionar que todos los ejemplos incluidos en este tutorial se probaron en Ubuntu 18.04 LTS.
Comando Linux killall
El comando killall le permite matar procesos por nombre. La siguiente es la sintaxis de la herramienta:
killall [OPTIONS] name
Y así es como la página del manual explica la herramienta:
killall sends a signal to all processes running any of the specified commands. If no signal name is specified, SIGTERM is sent. Signals can be specified either by name (e.g. -HUP or -SIGHUP) or by number (e.g. -1) or by option -s.
If the command name is not regular expression (option -r) and contains a slash (/), processes executing that particular file will be selected for killing, independent of their name.
killall returns a zero return code if at least one process has been killed for each listed command, or no commands were listed and at least one process matched the -u and -Z search criteria. killall returns non-zero otherwise.
A killall process never kills itself (but may kill other killall processes).
Los siguientes ejemplos con estilo de preguntas y respuestas deberían darle una mejor idea de cómo funciona el comando killall.
P1. ¿Cómo usar el comando killall?
El uso básico de la herramienta es muy sencillo:todo lo que tiene que hacer es pasar el nombre del proceso como argumento a killall. Por ejemplo, para matar al gthumb proceso que se estaba ejecutando en mi sistema, usé killall de la siguiente manera:
killall gthumb
Tenga en cuenta que, en caso de que no conozca el nombre exacto del proceso, puede utilizar el ps comando para obtener esta información.
P2. ¿Killall distingue entre mayúsculas y minúsculas?
Sí, lo es. Lanza un error de error 'no se encontró ningún proceso' si el usuario no puede escribir el nombre del proceso en el caso correcto. El siguiente es un ejemplo:
Sin embargo, si quieres, puedes forzar a killall a ignorar mayúsculas y minúsculas usando -I opción de línea de comando.
P3. ¿Cómo hacer que killall pregunte antes de terminar el proceso?
Supongamos que desea que el comando killall solicite permisos de usuario antes de eliminar un proceso, entonces puede usar -i opción de línea de comandos. Esto hará que la operación killall sea interactiva.
Por ejemplo:
P4. ¿Cómo elegir la señal que killall envía para procesar?
Por defecto, es la señal SIGTERM la que killall envía a los procesos. Sin embargo, también puede enviar otras señales. Puedes usar las opciones -s , --señal y -SEÑAL para enviar estas otras señales.
Sin embargo, para que esto funcione, necesita saber qué señales puede enviar el comando killall. Esto lo puedes hacer usando -l opción de línea de comando.
killall -l
A continuación se muestra la lista que produjo el comando antes mencionado en nuestro sistema:
P5. ¿Cómo evitar que Killall se queje si el proceso especificado no existe?
Si el proceso cuyo nombre se pasa a "killall" no se está ejecutando (no existe), la herramienta lo transmite al usuario en la salida.
Sin embargo, si no desea que la herramienta produzca ese resultado, puede usar -q opción de línea de comandos.
Así que puedes ver que el comando killall permaneció en silencio cuando se usó -q.
P6. ¿Cómo eliminar todos los procesos propiedad de un usuario?
Si el requisito es eliminar todos los procesos que posee un usuario específico, puede usar -u opción proporcionada por killall. No hace falta decir que la opción requiere que especifique el nombre de usuario para el usuario como entrada.
killall -u [user-name]
Por ejemplo:
killall -u himanshu
P7. ¿Cómo eliminar procesos en función del tiempo?
Supongamos que desea eliminar todos los procesos que ahora se han estado ejecutando durante más de 5 horas, entonces puede hacerlo usando -o opción de la siguiente manera:
killall -o 5h
Por supuesto, puede especificar nombres de procesos si no desea eliminar todos los procesos. Del mismo modo, si desea eliminar procesos que tienen, digamos, menos de 4 horas de antigüedad, puede hacerlo usando -y opción de línea de comando.
killall -y 4h
Así es como la página del manual explica estas opciones:
-o, --older-than
Match only processes that are older (started before) the time
specified. The time is specified as a float then a unit. The
units are s,m,h,d,w,M,y for seconds, minutes, hours, days,
weeks, Months and years respectively.
-y, --younger-than
Match only processes that are younger (started after) the time
specified. The time is specified as a float then a unit. The
units are s,m,h,d,w,M,y for seconds, minutes, hours, days,
weeks, Months and years respectively.
P8. ¿Cómo asegurarse de que killall solo regrese después de que los procesos mueran?
Después de que killall entregue la señal al proceso, si desea asegurarse de que el comando solo regrese después de que el proceso muera, puede hacerlo usando -w opción de línea de comando, que fuerza a killall a esperar.
killall -w [process-name]
Así es como la página man describe esta opción:
-w, --wait
Wait for all killed processes to die. killall checks once per
second if any of the killed processes still exist and only
returns if none are left. Note that killall may wait forever if
the signal was ignored, had no effect, or if the process stays
in zombie state.
Conclusión
Killall puede no ser un juego de niños para los novatos, pero tampoco es muy complejo. Debe practicar las opciones de línea de comando que ofrece. Hemos discutido la mayoría de ellos, por lo que este tutorial debería ser un buen punto de partida. Una vez que haya terminado con estos, puede leer más sobre el comando dirigiéndose a su página de manual.