script para reiniciar el proceso en Debian WSL

script para reiniciar el proceso en Debian WSL

Tengo amule-daemon instalado en Debian 11 WSL. El proceso amuleweb falla de vez en cuando, por lo que necesito reiniciarlo.

Estoy intentando automatizar esto con el siguiente script bash:

#!/bin/bash

if [[ $(pgrep amuleweb) ]]; then
   echo "amuleweb is running..";
else
   echo "amuleweb is not running, restarting now..";
   amuleweb --amule-config-file=/home/debian/.aMule/amule.conf
fi

pero no importa si amuleweb se está ejecutando o no (lo estoy comprobando con "ps aux | grep amule"), el script siempre devuelve "amuleweb se está ejecutando..."

Este es un ejemplo con amuleweb detenido.

debian@CUSPIDE:~$ ./amuleweb.sh
amuleweb is running..
debian@CUSPIDE:~$ [[ $(pgrep amuleweb) ]]
debian@CUSPIDE:~$ echo $?
1

Si ejecuto el comando pgrep directamente desde una terminal, funciona, pero dentro de mi script siempre devuelve "0".

¿Cómo lo soluciono? Gracias

Respuesta1

Hagamos una suposición fundamentada de que el nombre de su script podría incluir la cadena amuleweb. Si este es el caso, entonces pgrephay que encontrar el script en ejecución. La mejor práctica aquí sería utilizar el formulario pgrep -f(o -x, como señaló @TomYan en los comentarios) para asegurarse de que coincide con el ejecutable deseado.

También podría considerar el usuario de un administrador de procesos para este tipo de escenario (reiniciar un servicio fallido) en lugar de implementar el suyo propio. Si bien WSL ahora incluye la capacidad de usar Systemd, probablemente sería excesivo aquí a menos que ya lo tenga habilitado por otras razones. Echa un vistazo asupervisorcomo un supervisor de procesos bastante liviano y fácil de configurar que puede reiniciar servicios fallidos.

información relacionada