
Tengo un pequeño script para transformar notas de entrada midi en funciones multimedia (subir volumen, siguiente canción, etc.). Se parece a esto:
#!/bin/bash
aseqdump -p "CMD MM-1" | \
while IFS=" ," read src ev1 ev2 ch label1 data1 label2 data2 rest; do
case "$ev1 $ev2 $data1" in
"Note on 32" ) xdotool key XF86AudioRaiseVolume ;;
"Note on 31" ) xdotool key XF86AudioLowerVolume ;;
"Note on 51" ) xdotool key XF86AudioMute ;;
"Note on 28" ) xdotool key XF86AudioPrev ;;
"Note on 29" ) xdotool key XF86AudioNext ;;
"Note on 50" ) xdotool key XF86AudioPlay ;;
esac
done
Puedo iniciarlo desde la terminal y sigue sin poder recibir comandos hasta que presiono ctrl+c
. Hasta ahora, todo bien. Mi pregunta es, ¿cómo puedo usar este script como un servicio para no tener que preocuparme de que esté en una terminal visible y se ejecute al reiniciar?
Tengo un archivo de servicio /etc/systemd/system/
con el siguiente contenido:
[Unit]
Description=My Shell Script for Sync
[Service]
ExecStart=/bin/bash /usr/bin/midi2keys.sh
[Install]
WantedBy=multi-user.target
Respuesta1
Para sobrevivir al reinicio, debe guardar su script en
cd /opt/systemd/
entoncessudo chmod a+x YOURSCRIPTFILENAME
luego crea un servicio como
sudo touch /etc/systemd/system/YOURSERVICENAME.service
Luego edite el archivo escribiendo sudo nano /etc/systemd/system/YOURSERVICENAME.service
y luego escribiendo:
[Unit]
Description=My Shell Script for Sync
[Service]
ExecStart=/bin/bash /usr/bin/midi2keys.sh
[Install]
WantedBy=multi-user.target
luego Ctrl + X para salir, Y para guardar e ingresar para escribir el archivo.
Ahora, para instalar el servicio y asegurarse de que se cargue en el momento del arranque, escriba:
systemctl daemon-reload
systemctl enable YOURSERVICENAME.service
reinicie la máquina.