Script ejecutado por un servicio de systemd que no borra el archivo del servicio.
Estoy tratando de crear un servicio systemd
que ejecute un script de shell al reiniciar, este script eliminará algunos archivos, eliminará el servicio y luego se eliminará a sí mismo. Pero cuando habilito el servicio, se ejecuta el script, se eliminan los archivos, pero falla la eliminación del servicio. Mi script es:
rm /var/local/myvars/file
systemctl stop myservice.service
systemctl disable myservice.service
rm /etc/systemd/system/myservice.service
systemctl daemon-reload
systemctl reset-failed
rm /var/tmp/myscript
myservice.service
es:
[Unit]
Descripción = Ejecutar script al reiniciar
Before =
[Service]
Type=oneshot
ExecStart=/var/tmp/myscript
RemainAfterExit=no
[Install]
WantedBy=multi-user.target
¿Qué estoy haciendo mal? Lo que quiero hacer es eliminar ciertos archivos después del reinicio, por lo tanto, quiero una manera de ejecutar algún script solo una vez después del reinicio. ¿Es esta la forma correcta de hacerlo o hay alguna otra mejor manera?
davy.ai
El problema es que systemd está intentando detener y deshabilitar el servicio mientras se está ejecutando, lo cual no está permitido.
Un enfoque mejor sería que el script se ejecute una sola vez en el momento del arranque y luego se elimine del sistema, en lugar de intentar eliminar el servicio que lo ejecuta. Esto se puede lograr usando el comando
systemctl edit
para crear un servicio de una sola vez que ejecute el script en el momento del arranque, de la siguiente manera:Cambie los permisos del script para incluir permisos de ejecución:
Este enfoque evita el problema de intentar eliminar un servicio en ejecución y asegura que el script se ejecute solo una vez en el momento del arranque.