Precisa de um script executado a cada reinicialização em +1 minuto. Eu coloquei um registro, @rebootmas ainda é muito cedo para o meu script. Como executá-lo algum tempo após a reinicialização?
Por que é muito cedo ? Talvez um script init seja mais adequado (considerando dependências, por exemplo, esse script precisa que a rede seja configurada primeiro )?
sr_ 07/12/12
meu script precisa ser executado após todos os outros, o último em palavras curtas
Yurij73
como seu trabalho precisa ser executado depois de tudo e como o conceito de tudo é bastante variável (a adição de um novo aplicativo de inicialização automática @ reboot não é tão incomum), acho que cabe a você colocar seu trabalho nos scripts rc em um maneira que servidores seu propósito. Colocar sua tarefa na parte inferior das tarefas especificadas em /etc/rc.local é geralmente o que você deseja, mas, dependendo da configuração de inicialização do sistema, isso pode não ser verdadeiro o tempo todo. Então, teste e veja se funciona para você.
MelBurslan
Parece um caso para Upstart?
Nafg
Respostas:
68
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 60ao 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.
Ou use uma opção de linha de comando para ajustar o atraso (por exemplo, o script -s Xque seria traduzido para sleep Xdentro do script).
Peterph
Posso aplicar isso ao arquivo taskrunner em /etc/init.d/?
Andres Anjo
@AndresAngel - me desculpe, eu não sei. Eu uso FreeBSD que não tem taskrunner, nem, para esse assunto,/etc/init.d
D_Bye
no meu rhel7, o sono não funciona, dorme para sempre e nunca volta.
Inder R Singh
15
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.servicecom o seguinte conteúdo:
@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.
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: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.
fonte
script -s X
que seria traduzido parasleep 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:Em seguida, execute:
Você está feito!
fonte
Eu usaria
at
. Como em:... 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.
fonte