Besoin d'un script exécuté à chaque redémarrage en +1 minute. J'ai placé un disque @reboot
mais c'est trop tôt pour mon script. Comment l'exécuter après le redémarrage?
Besoin d'un script exécuté à chaque redémarrage en +1 minute. J'ai placé un disque @reboot
mais c'est trop tôt pour mon script. Comment l'exécuter après le redémarrage?
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:
@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.
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:
[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
Puis exécutez:
sudo systemctl daemon-reload
sudo systemctl enable my_script
Vous avez terminé!
Je voudrais utiliser at
. Un péché:
@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.