cron
réponse implémentée différente de celle votée en haut
Cette réponse utilise toujours cron
mais utilise une méthode différente de celle de la réponse la plus votée. Cela fonctionne depuis Ubuntu 16.04 mais probablement supporté bien plus tôt. C'est juste que j'ai commencé à utiliser cron
pour exécuter des travaux au démarrage de l'ordinateur depuis la 16.04.
Quand est-ce que cron
courir ?
Dans les commentaires, quelqu'un a demandé "quand s'exécutent-ils ?". Vous pouvez le dire dans syslog / journalctl :
$ journalctl -b | grep cron
Jan 02 16:54:40 alien cron[919]: (CRON) INFO (pidfile fd = 3)
Jan 02 16:54:40 alien cron[919]: (CRON) INFO (Running @reboot jobs)
Jan 02 16:54:40 alien systemd[1]: Started Run anacron jobs.
Jan 02 16:54:40 alien anacron[949]: Anacron 2.3 started on 2018-01-02
Jan 02 16:54:40 alien anacron[949]: Normal exit (0 jobs run)
Jan 02 16:54:40 alien CRON[952]: pam_unix(cron:session): session opened for user root by (uid=0)
Jan 02 16:54:40 alien CRON[954]: pam_unix(cron:session): session opened for user root by (uid=0)
Jan 02 16:54:40 alien CRON[951]: pam_unix(cron:session): session opened for user root by (uid=0)
Jan 02 16:54:40 alien CRON[950]: pam_unix(cron:session): session opened for user root by (uid=0)
Jan 02 16:54:40 alien CRON[985]: (root) CMD ( /usr/local/bin/cron-reboot-cycle-grub-background)
Jan 02 16:54:40 alien CRON[954]: pam_unix(cron:session): session closed for user root
Jan 02 16:54:40 alien cron[919]: sendmail: Cannot open smtp.gmail.com:587
Jan 02 16:54:40 alien CRON[952]: pam_unix(cron:session): session closed for user root
Jan 02 16:54:40 alien cron[919]: sendmail: Cannot open smtp.gmail.com:587
Jan 02 16:54:40 alien CRON[950]: pam_unix(cron:session): session closed for user root
Une chose à noter est cron
peut vous envoyer par courriel l'état des travaux effectués et @reboot
les travaux sont exécutés de sorte que le gestionnaire de réseau précoce et le courrier électronique ne seront pas exécutés à moins que vous ne mettiez une sleep
dans votre script.
Où mettre vos scripts ?
Mettez vos scripts dans le répertoire /etc/cron.d
:
$ ll /etc/cron.d
total 44
drwxr-xr-x 2 root root 4096 Nov 26 19:53 ./
drwxr-xr-x 139 root root 12288 Dec 31 13:58 ../
-rw-r--r-- 1 root root 244 Dec 28 2014 anacron
-rw-r--r-- 1 root root 148 Feb 18 2017 cycle-grub-background
-rw-r--r-- 1 root root 138 Mar 5 2017 display-auto-brightness
-rw-r--r-- 1 root root 460 Nov 26 19:53 nvidia-hdmi-sound
-rw-r--r-- 1 root root 102 Feb 9 2013 .placeholder
-rw-r--r-- 1 root root 224 Nov 19 2016 touch-vmlinuz
-rw-r--r-- 1 root root 700 Aug 5 11:15 turn-off-hyper-threading
A quoi ressemble un script ?
Voici un couple de scripts que j'ai configuré pour être exécuté à chaque démarrage :
$ cat /etc/cron.d/cycle-grub-background SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
@reboot root /usr/local/bin/cron-reboot-cycle-grub-background
$ cat /etc/cron.d/touch-vmlinuz
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
@reboot root touch "/boot/vmlinuz-"`uname -r`
7 votes
Si quelqu'un pouvait également indiquer QUAND et OÙ, ce serait génial. Je dis cela parce que je sais qu'il y a au moins 2 façons de démarrer un script qui se déclenchera avant que d'autres applications aient été démarrées (comme X11)
3 votes
Ce fil de réponse entier est un désordre. Le format Stack Exchange ne semble pas être le mieux adapté à cette question.
4 votes
+1 à @GabrielFair. Une GRANDE partie du problème est que la question et la réponse originales datent de DIX ANS. J'ajouterais également qu'il y a trop de façons de résoudre ce problème. Qu'est-il arrivé à la simplicité de la philosophie Unix ! Demande à quelqu'un bien informé et avec des points suffisants réécrire ce post, ou ajouter une nouvelle, mise à jour, réponse définitive pour les versions modernes d'os.