¿Cómo puedo ejecutar el script bash en segundo plano?
Estoy aprendiendo a escribir scripts bash y acabo de hacer un proyecto corto para notificarme (con notificación-envío) cuando mi batería está baja o cargada.
Me gustaría recibir algunas sugerencias de cómo puedo ejecutar este script sin mostrar la terminal. Mi idea es agregarlo en el software "Aplicaciones de inicio" para que se ejecute cuando arranque el sistema, pero no quiero mostrar el terminal, solo para ejecutarlo en segundo plano.
Respuestas
Puede configurar un servicio systemd.
Puede crear un archivo (como sudo) con su editor favorito (nano, vim, etc.) como:
sudo nano /etc/systemd/system/myexecuteable.service
Debe contener al menos lo siguiente:
[Unit]
Description=start my executable after multi-user target
[Service]
Type=simple
ExecStart=/path/to/my/executable
[Install]
WantedBy=multi-user.target
Para asegurarse de que el servicio se inicie después de reiniciar, ejecute: sudo systemctl enable myexecutable.service
Ese servicio se ejecutará continuamente si bash tiene algún tipo de bucle. Si ese ejecutable tiene alguna salida (use "logger para eso en un archivo bash) puede verificarlo en cualquier momento usandojournalctl -u myexecutable.service
Se puede ejecutar un script en segundo plano desde la línea de comando como este:
$ ./myscript.sh &
En otras palabras, agregue &al comando.
Ha dicho que desea ejecutar este script "sin mostrar el término". Creo que hay dos formas de hacer esto:
crear un
systemdservicio, como en esta respuestainicie el script como un
crontrabajo cuando el sistema arranca:
Para configurar un crontrabajo, deberá crear una nueva crontabentrada.
Para hacer esto, abra una terminal y escriba el siguiente comando:
$ crontab -e
Esto lo abrirá crontaben un editor ( nanoes una buena opción para el editor). Cuando esté en el editor, agregue la siguiente línea al final del archivo:
@reboot /home/user/myscript.sh & >> /home/user/myscript.log 2>&1
¿Dónde /home/user/myscript.shestá la ruta completa a su archivo de script? Cualquier salida de su secuencia de comandos se redirigirá al archivo en /home/user/myscript.log. Asegúrese de revisar este archivo de registro para ver si hay mensajes de error.
Guarde el archivo ( ^ o) si lo usa nanoy salga del editor ( ^ x).
Algunas cosas para recordar:
Asegúrese de que
myscript.shsea ejecutable .Si usa algún comando en
myscript.sh, asegúrese de que el sistema sepa dónde encontrarlo, es decir, use una ruta completa al comando o declare un PATH en su script.
Háganos saber si tiene más preguntas (publique un comentario) e intentaremos ayudarlo.