Estou criando um systemd
serviço que fará literalmente algo "estúpido", como exibir uma mensagem na tela ao desligar, dizendo algo como "Obrigado por usar este computador. Foi um prazer poder ajudá-lo hoje. Tenha um bom dia."
Se meu script de desligamento fosse realmente executado, ele colocaria a mensagem acima em um arquivo de texto simples, /root/MyScripts/Shutdown/test.txt
mas não funciona, apesar de eu ter tentado muitas variações nas últimas seis semanas, quebrando a cabeça constantemente.
Este é meu script de mensagem de teste que deveria ser invocado systemd
imediatamente antes do desligamento, mas não consegue.
#ShutdownMesg.sh
#!/bin/bash
echo -e 'Hello, World! \nHave a good day!' >> test.txt
z=0
for i in {1..3}; do
sleep 1m
((z++))
echo ""
done
chmod u+x ShutdownMesg.sh
Observe que incluí um loop simples para que o sistema insira uma pausa de 3 minutos para garantir que meu arquivo de teste tenha tempo de ser gravado antes que o desligamento real ocorra.
Código para meu systemd
serviço:
[Unit]
Description=Create a simple test message at shutdown but will add more useful shutdown commands later
DefaultDependencies=no
Before=poweroff.target
[Service]
Type=forking
RemainAfterExit=yes
ExecStart=/root/MyScripts/Shutdown/ShutdownMesg.sh
[Install]
WantedBy=poweroff.target
Depois de criar o serviço acima, fiz o seguinte:
Coloquei-o em um arquivo de texto simples /usr/lib/systemd/system/myshutdownmesg.service
e o habilitei com systemctl enable myshutdownmesg.service
e então fiz um systemctl daemon-reload
, seguido por um systemctl list-unit-files
.
Quando este último comando é executado, obtenho uma longa lista de serviços. Meu serviço específico, juntamente com outros, é listado em uma coluna na extremidade esquerda da tela; a segunda coluna mostra que meu serviço está habilitado, mas a terceira coluna mostra que ele está desabilitado.
Ao executar systemctl start myshutdownmesg.service
, recebi as seguintes mensagens de erro:
Job for myshutdownmesg.service failed because the control process exited with error code.
See "systemctl status myshutdownmesg.service" and "journalctl -xeu myshutdownmesg.service" for details.
O que há de errado com meu script? Estou esquecendo de algo? Como este é um script para ser executado no momento do desligamento, preciso passar algum parâmetro especial para o kernel ou recompilá-lo? Aliás, desabilitei o SeLinux, mas vou habilitá-lo mais tarde, depois que meu script for executado.