Los comandos Kill y Killall en Linux

- Andrés Cruz

In english
Los comandos Kill y Killall en Linux

Dependiendo de la distribución Linux que utilicen, su versión, programas instalados, recursos de la computadora entre otros agentes, muchas cosas pueden salir mal que provoqué que la computadora se "cuelgue" o al menos algún programa en cuestión (sucede bastante a menudo con programas que consuman muchos recursos como Eclipse, Android Studio, emuladores, etc.).

En estos casos lo correcto es simplemente "matar" o destruir el proceso(s) asociado al programa con el objetivo de liberar recursos y posiblemente iniciar el programa nuevamente.

Los comandos Kill y Killall para "matar" procesos

Existen un par de comandos que permiten realizar esta tarea de una manera sencilla; ellos son Kill y Killall.

El comando Kill

Para emplear el comando Kill es necesario conocer el identificador del proceso que queremos matar o destruir; para esto empleamos el comando ps aux:

...
3036 ?        S      0:00 /opt/google/chrome/chrome --type=zygote --enable-crash-reporter=DFD73122-B4B8-416D-A254-9ABF21A8B36E
 3056 ?        Sl     4:35 /proc/self/exe --type=gpu-process --channel=3019.0.65190361 --enable-crash-reporter=DFD73122-B4B8-416D-A254-9ABF2
 3062 ?        S      0:00 /proc/self/exe --type=gpu-process --channel=3019.0.65190361 --enable-crash-reporter=DFD73122-B4B8-416D-A254-9ABF2
 3145 ?        Sl     0:08 /opt/google/chrome/chrome --type=renderer --lang=es-419 --force-fieldtrials=AffiliationBasedMatching/Enabled/Audi
 3149 ?        Sl     0:00 /opt/google/chrome/chrome --type=renderer --lang=es-419 --force-fieldtrials=AffiliationBasedMatching/Enabled/Audi
 3152 ?        Sl     0:00 /opt/google/chrome/chrome --type=renderer --lang=es-419 --force-fieldtrials=AffiliationBasedMatching/Enabled/Audi
 3225 ?        Sl     0:00 /usr/libexec/gvfsd-trash --spawner :1.5 /org/gtk/gvfs/exec_spaw/0
 3268 ?        Sl     1:01 /opt/google/chrome/chrome --type=renderer --lang=es-419 --force-fieldtrials=AffiliationBasedMatching/Enabled/Audi
 3525 ?        S      0:00 /home/andres/sts-bundle/sts-3.6.4.RELEASE/STS
 3527 ?        Sl     5:07 /usr/bin/java -Dosgi.requiredJavaVersion=1.6 -Xms40m -Xmx768m -XX:MaxPermSize=256m -jar /home/andres/sts-bundle/s
 4306 ?        Sl     6:14 /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.60-14.b27.fc21.x86_64/bin/java -Dcatalina.base=/home/andres/sts-bundle/pivo
 4349 ?        Ss     0:02 postgres: postgres oo 127.0.0.1(50352) idle
 4468 ?        Sl     0:17 /opt/google/chrome/chrome --type=renderer --lang=es-419 --force-fieldtrials=*AffiliationBasedMatching/Enabled/Aud
 4510 ?        Sl     0:28 /opt/google/chrome/chrome --type=renderer --lang=es-419 --force-fieldtrials=*AffiliationBasedMatching/Enabled/Aud
 5568 ?        Sl     0:16 /opt/google/chrome/chrome --type=renderer --lang=es-419 --force-fieldtrials=*AffiliationBasedMatching/Enabled/Aud
 5624 ?        Ss     0:04 postgres: postgres oo 127.0.0.1(51676) idle
 6278 ?        Sl     0:02 /usr/bin/nautilus --gapplication-service
 7712 ?        Sl     0:03 /usr/bin/pgadmin3
 8133 ?        Sl     0:49 /opt/google/chrome/chrome --type=renderer --lang=es-419 --force-fieldtrials=*AffiliationBasedMatching/Enabled/Aud
 8207 ?        Sl     0:40 /opt/google/chrome/chrome --type=ppapi --channel=3019.108.1263279707 --ppapi-flash-args --lang=es-419 --enable-cr
 8381 ?        S      0:00 [kworker/u4:2]
 8600 ?        S      0:01 [kworker/1:0]
 9268 ?        S      0:00 [kworker/0:3]
 9545 ?        Sl     0:00 /opt/google/chrome/chrome --type=renderer --lang=es-419 --force-fieldtrials=*AffiliationBasedMatching/Enabled/Aud
 9582 ?        S      0:00 [kworker/1:2]
 9622 ?        Sl     0:00 /opt/google/chrome/chrome --type=renderer --lang=es-419 --force-fieldtrials=*AffiliationBasedMatching/Enabled/Aud
 9629 ?        Sl     0:02 /opt/google/chrome/chrome --type=renderer --lang=es-419 --force-fieldtrials=*AffiliationBasedMatching/Enabled/Aud
 9642 ?        Sl     0:00 /opt/google/chrome/chrome --type=ppapi --channel=3019.137.1613879471 --ppapi-flash-args --lang=es-419 --enable-cr
 9650 ?        Sl     1:12 /opt/google/chrome/chrome --type=renderer --lang=es-419 --force-fieldtrials=*AffiliationBasedMatching/Enabled/Aud
 9873 ?        S      0:00 [kworker/0:0]
 9876 ?        S      0:00 [kworker/u4:0]
 9967 ?        Rl     0:00 /usr/libexec/gnome-terminal-server
 9970 ?        S      0:00 gnome-pty-helper
 9971 pts/0    Ss     0:00 bash
10051 ?        Sl     0:01 /opt/google/chrome/chrome --type=renderer --lang=es-419 --force-fieldtrials=*AffiliationBasedMatching/Enabled/Aud
10078 ?        S      0:00 [kworker/0:1]
10081 ?        Sl     0:00 /usr/bin/gedit --gapplication-service
10088 ?        S      0:00 [kworker/u4:1]
...

Filtrando procesos con el comando ps y grep

Aunque para nuestra sorpresa, hay demasiados procesos manejados por el sistema que no fueron necesariamente iniciados por nuestra persona y forman parte del sistema; para filtrarlos podemos emplear el comando ps en conjunto con el comando grep de la siguiente manera:

ps aux | grep gedit

Esto nos devuelve un listado muchísimo más reducido:

andres   10081  0.3  0.7 666388 35004 ?        Sl   11:21   0:00 /usr/bin/gedit --gapplication-service andres   10231  0.0  0.0 113020  2248 pts/0    S+   11:24   0:00 grep --color=auto gedit

Ahora podemos matar el programa Gedit asociado al proceso ID 10081 (PDI) (como podemos ver en la salida devuelta anteriormente) sencillamente ejecutamos el siguiente comando:

kill 10081

Si en el proceso no existe, veremos una salida similar a la siguiente:

kill 41076
bash: kill: (41076) - No existe el proceso

La sintaxis del comando:

kill PDI

El comando Killall

Con el comando Killall es más sencillo, con tan solo conocer el nombre del proceso que queremos matar es suficiente; por ejemplo, para matarlo; para matar al proceso llamado "firefox":

killall firefox

Para matar el proceso "gedit":

killall gedit

Para matar el proceso "pgadmin3":

killall pgadmin3

Para matar el proceso "google-chrome":

killall google-chrome

Para matar el proceso "nautilus":

killall nautilus

Si en el proceso ("pgadmin3" en este ejemplo) no existe, veremos una salida similar a la siguiente:

killall pgadmin3
pgadmin3: no process found

Cómo podrás darte cuenta, es necesario saber el nombre del proceso que deseas matar del sistema para emplear el comando Killall.

Andrés Cruz

Desarrollo con Laravel, Django, Flask, CodeIgniter, HTML5, CSS3, MySQL, JavaScript, Vue, Android, iOS, Flutter

Andrés Cruz en Udemy

Acepto recibir anuncios de interes sobre este Blog.