Besoin d'un script exécuté à chaque redémarrage en +1 minute. J'ai placé un disque @rebootmais c'est trop tôt pour mon script. Comment l'exécuter après le redémarrage?
Pourquoi est-ce trop tôt ? Peut-être qu'un script d'initialisation conviendrait mieux (en ce qui concerne les dépendances, par exemple, ce script nécessite la mise en réseau préalable )?
Sr.
mon script doit être exécuté après tous les autres, le dernier en mots courts
Yurij73
puisque votre travail doit être exécuté après tout et que le concept de tout est assez variable (l'ajout d'une nouvelle application autostart @ reboot n'est pas si rare), je pense qu'il vous appartient de placer votre travail dans les scripts rc dans un manière qui serveurs votre but. Placer votre tâche au bas des tâches spécifiées dans /etc/rc.local correspond généralement à ce que vous souhaitez, mais selon la configuration de démarrage de votre système, il se peut que cela ne soit pas toujours vrai. Alors, testez-le et voyez si cela fonctionne pour vous.
MelBurslan
Cela ressemble à un cas pour Upstart?
Nafg
Réponses:
69
Le script est-il uniquement destiné à s'exécuter une minute après le démarrage ou peut-il être utilisé à d'autres moments également? Dans le premier cas, vous pouvez ajouter sleep 60au début de votre script ou, dans le second cas, l'ajouter au fichier crontab:
@reboot sleep 60 && my_script.sh
Comme l'a souligné sr_, cependant, vous abordez peut-être cette question de manière inappropriée, et un script init.d ou rc.d approprié serait une solution plus robuste.
Ou utilisez une option de ligne de commande pour modifier le délai (par exemple, script -s Xce qui se traduirait par l' sleep Xintérieur du script).
Peter
Puis-je appliquer cela au fichier taskrunner dans /etc/init.d/?
Andres Angel
@AndresAngel - Je suis désolé, je ne sais pas. J'utilise FreeBSD qui n'a pas taskrunner, ni d'ailleurs,/etc/init.d
D_Bye le
sur mon rhel7, dormir ne fonctionne pas du tout, il dort pour toujours et ne revient jamais.
Inder R Singh
15
Si vous avez besoin d'exécuter quelque chose après le redémarrage lorsque le réseau sera disponible, par exemple, vous pouvez écrire une unité systemd qui sera exécutée à l'heure requise (bien entendu, cela ne fonctionnera que sur les systèmes dotés de systemd).
Pour ce faire, créez un fichier /etc/systemd/system/my_script.serviceavec le contenu suivant:
@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.
... avec l'avertissement mentionné plus haut que si vous voulez vraiment l'exécuter après tout le reste, vous devriez vérifier comment le faire dans l'init utilisé par votre système d'exploitation.
Réponses:
Le script est-il uniquement destiné à s'exécuter une minute après le démarrage ou peut-il être utilisé à d'autres moments également? Dans le premier cas, vous pouvez ajouter
sleep 60
au début de votre script ou, dans le second cas, l'ajouter au fichier crontab:Comme l'a souligné sr_, cependant, vous abordez peut-être cette question de manière inappropriée, et un script init.d ou rc.d approprié serait une solution plus robuste.
la source
script -s X
ce qui se traduirait par l'sleep X
intérieur du script).taskrunner
, ni d'ailleurs,/etc/init.d
Si vous avez besoin d'exécuter quelque chose après le redémarrage lorsque le réseau sera disponible, par exemple, vous pouvez écrire une unité systemd qui sera exécutée à l'heure requise (bien entendu, cela ne fonctionnera que sur les systèmes dotés de systemd).
Pour ce faire, créez un fichier
/etc/systemd/system/my_script.service
avec le contenu suivant:Puis exécutez:
Vous avez terminé!
la source
Je voudrais utiliser
at
. Un péché:... avec l'avertissement mentionné plus haut que si vous voulez vraiment l'exécuter après tout le reste, vous devriez vérifier comment le faire dans l'init utilisé par votre système d'exploitation.
la source