Eu tenho um script bash que detecta quando novos diretórios são criados em / var / log / myhosts /. Quando um novo diretório é criado, ele deve criar um diretório chamado "myfolder" abaixo dele.
/etc/myscript.sh
#!/bin/bash
/usr/bin/inotifywait -m /var/log/myhosts -e create -e moved_to |
while read path action file; do
/usr/bin/mkdir -p "/var/log/myhosts/$file/myfolder"
done
Eu quero executar este script a partir de uma unidade de serviço systemd na inicialização. Eu criei e habilitei a seguinte unidade de serviço systemd:
/etc/systemd/system/myhosts.service
[Unit]
Description=Watches /var/log/myhosts/ for new directories
After=rsyslog.service
[Service]
Type=simple
ExecStart=/etc/myscript.sh
[Install]
WantedBy=multi-user.target
Este script funciona como esperado se eu executar como:
bash /etc/myscript.sh
sh /etc/myscript.sh
cd /etc/ -> ./myscript.sh
systemctl start myhosts.service
crontab -e -> @reboot /etc/myscript.sh -> works after reboot
Se eu ativar a unidade de serviço systemd
e reinicializar meu sistema Linux, após a reinicialização systemctl status myhosts.service
informar que o serviço está em execução, ps -ef | grep my
retornará que há um processo para o script e o script está sendo executado corretamente mas quando eu crio diretórios em /var/log/myhosts/
ele não cria um diretório myfolder
dentro deles.
Eu só quero saber por que a abordagem da unidade de serviço systemd
não funciona após a reinicialização. O que estou fazendo de errado? Como mencionado acima, a abordagem crontab @reboot /etc/myscript.sh
funciona conforme o esperado.