Besoin d'un script exécuté à chaque redémarrage en +1 minute. J'ai placé un record @reboot
mais il est trop tôt pour mon script. Comment l'exécuter quelque temps après le redémarrage?
Le script ne doit-il jamais être exécuté qu'une minute après le démarrage, ou peut-il également être utilisé à d'autres moments? Dans le premier cas, vous pouvez ajouter sleep 60
au début de votre script, ou dans ce dernier cas, ajoutez-le au fichier crontab:
@reboot sleep 60 && my_script.sh
Comme l'a souligné sr_, cependant, peut-être que vous abordez ce problème de la mauvaise façon, et un bon script init.d ou rc.d serait une solution plus robuste.
Si vous devez exécuter quelque chose après le redémarrage lorsque le réseau sera disponible, par exemple, vous pouvez écrire l'unité systemd qui sera exécutée au moment requis (bien sûr, cela ne fonctionnera que sur les systèmes avec systemd).
Pour ce faire, créez le 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
Exécutez ensuite:
Sudo systemctl daemon-reload
Sudo systemctl enable my_script
Vous avez terminé!
J'utiliserais 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 la mise en garde supplémentaire mentionnée que si ce que vous voulez vraiment est de l'exécuter après toutes autres choses, vous devriez vérifier comment le faire dans l'initialisation que votre système d'exploitation utilise.