1

Automatizar cierre de procesos con bash (Unix)

¿No te ha pasado que un programa se queda congelado?
Esto puede ser un problema molesto, puesto que el programa puede tener varios procesos, y probablemente no se cierren todos.

Una solución a este problema puede ser la automatización con bash. Donde nos apoyaremos del uso de operadores de control, redirecciones de entradas y un poco de bash scripting.

  • 1. Paso: Crear un archivo
touch endprocess.sh
  • 2. Paso: Editar el archivo con Vim o Nano
sudo vim endprocess.sh

Usaré vim por lo que para escribir se entra al modo interactivo apretando " I ", luego pegas el siguiente código escrito en bash:

#!/bin/bash
if [ $#-eq 0 ]
  thenecho"No arguments supplied"exit 2
fi


file=processes.temp

echo"Getting process from $1 "
ps -aux | grep $1 | awk '{print $2}' > $filefor process in $(cat $file)
dokill$process && echo$process'has been endend'done
  • 3. Paso: Guardar el programa y otorgarle permisos
    Se guarda presionando ESC, escribiendo “:wq!”. Como se ve en la siguiente imagen.

    Ahora, otorgale permisos de ejecución con el siguiente comando:
sudo chmod +x endprocess.sh
  • 4. Paso: Ejecución y uso
    Una vez creado todo, ahora pasemos al uso del programa, es simple, simplemente recibe un parametro o argumento, como se ve a continuación. En mi caso quiero cerrar Discord por completo, por lo que debo saber el nombre del programa, o qué nombre tienen sus procesos.
sh endprocess.sh discord

o también puedes usar

./endprocess.sh discord

Si queremos cerrar firefox por completo:

./endprocess.sh firefox

  • La magia detrás del programa
    Como lo pudiste observar, el programa hace uso de operadores de control y redirecciones. Usando programas como ps (para obtener procesos en ejecución), grep (para filtrar el resultado de procesos) y awk (para dar un formato más breve el resultado de grep).

ADVERTENCIA

El mal uso del programa puede hacer daños temporales en el funcionamiento del sistema, usalo con cuidado.

Escribe tu comentario
+ 2