Precisa de um script executado a cada reinicialização em +1 minuto. Eu coloquei um registro, @reboot
mas ainda é muito cedo para o meu script. Como executá-lo algum tempo após a reinicialização?
Precisa de um script executado a cada reinicialização em +1 minuto. Eu coloquei um registro, @reboot
mas ainda é muito cedo para o meu script. Como executá-lo algum tempo após a reinicialização?
Respostas:
O script só tem a intenção de executar um minuto após a inicialização ou também pode ser usado em outros momentos? No primeiro caso, você pode adicionar sleep 60
ao início do seu script ou, no último caso, adicioná-lo ao arquivo crontab:
@reboot sleep 60 && my_script.sh
Como foi indicado por sr_, porém, talvez você esteja lidando com isso da maneira errada, e um script init.d ou rc.d adequado seria uma solução mais robusta.
script -s X
que seria traduzido para sleep X
dentro do script).
taskrunner
, nem, para esse assunto,/etc/init.d
Se você precisar executar algo após a reinicialização quando a rede estiver disponível, por exemplo, você pode escrever a unidade systemd que será executada no tempo necessário (é claro que isso funcionará apenas em sistemas com systemd).
Para fazer isso, crie um arquivo /etc/systemd/system/my_script.service
com o seguinte conteúdo:
[Unit]
Description=My script that requires network
After=network.target
[Service]
Type=oneshot
ExecStart=/full/path/to/my_script.sh
[Install]
WantedBy=multi-user.target
Em seguida, execute:
sudo systemctl daemon-reload
sudo systemctl enable my_script
Você está feito!
Eu usaria at
. Como em:
@reboot echo /root/bin/do_the_stuff | at now + 2 minutes
# at assigns it an execution time truncated to whole minutes,
# so this means it will execute in 1--2 minutes.
... com a ressalva mencionada adicional de que se o que você realmente deseja é executá-lo depois de todas as outras coisas, você deve verificar como fazer isso no init que o seu sistema operacional está usando.