Início do trabalho do Crontab +1 min após @reboot

31

Precisa de um script executado a cada reinicialização em +1 minuto. Coloquei um registro @reboot , mas é muito cedo para o meu script. Como executá-lo em algum momento após a reinicialização?

    
por Yurij73 07.12.2012 / 10:51

3 respostas

50

O script só tem a intenção de ser executado um minuto após a inicialização ou pode ser usado em outros momentos também? 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 apontado por sr_, talvez você esteja lidando com isso de maneira errada, e um script init.d ou rc.d apropriado seria uma solução mais robusta.

    
por 07.12.2012 / 11:22
11

Se você precisar executar alguma coisa após a reinicialização quando a rede estiver disponível, por exemplo, você pode gravar a unidade systemd que será executada no tempo necessário (claro que isso funcionará apenas em sistemas com systemd).

Para isso, crie o 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ê terminou!

    
por 03.04.2017 / 19:58
8

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 adicionada de que, se o que você realmente quer é executá-lo depois de todas as outras coisas, você deve verificar como fazer isso no init que seu sistema operacional está usando.

    
por 22.08.2015 / 22:23

Tags