Comment utiliser @reboot dans /etc/cron.d

17

Je migre les crontabs de chaque utilisateur vers /etc/cron.d, car cela permettrait une sauvegarde, une restauration et un contrôle de version appropriés.

Jusqu'à présent, si je comprends bien, la seule différence entre les crontabs de l'utilisateur et celles etc., est que vous devez spécifier l'utilisateur comme 6ème colonne. Est-ce correct?

Et ma question principale, pour laquelle je n'ai trouvé la réponse nulle part sur Internet: Quelle est la bonne façon d'utiliser @rebootdans /etc/cron.d ou / etc / crontab?

quelque chose comme ça @reboot root command?

hyperknot
la source

Réponses:

20

Depuis la page de manuel de crontab :

Emplois dans /etc/cron.d/

Les tâches dans cron.d sont des tâches système, qui sont généralement utilisées pour plusieurs utilisateurs. C'est la raison pour laquelle le nom de l'utilisateur est nécessaire. MAILTO sur la première ligne est facultative.

EXEMPLE DE TRAVAIL DANS /etc/cron.d/job

 #login as root
 #create job with preferred editor (e.g. vim)
 MAILTO=root
 * * * * * root touch /tmp/file

C'est toute la section sur crontab dans / etc , donc je suppose que l'inclusion de l'utilisateur sous le nom duquel le travail s'exécute est en effet la seule différence.

Toujours à partir de la même page de manuel:

Ces «surnoms» de spécification d'heure spéciale sont pris en charge, qui remplacent les 5 champs d'heure et de date initiaux, et sont préfixés par le caractère «@»:

@reboot: exécuté une fois après le redémarrage.

Ainsi, vous déduisez que la bonne façon d'utiliser @reboot est

   @reboot user_name command

est correct .

MariusMatutiae
la source
1

Dans le cas où /etc/crontabvous n'avez qu'à ajouter ces lignes.

@reboot        command

La commande peut être n'importe quel script ou un seul fichier.

Krishna
la source
Est-ce que ça marche? /etc/crontabnécessite généralement un nom d'utilisateur.
mwfearnley
1

Si vous l'exécutez de manière interactive comme ci-dessous, vous ne spécifiez pas l'utilisateur:

crontab -e
@reboot /root/mycommand

Si vous le mettez sous forme de fichier dans /etc/cron.d, par exemple /etc/cron.d/mycronfile, vous devez mettre l'utilisateur:

@reboot root /root/mycommand
Wadih M.
la source