À partir de la page de manuel crontab :
Emplois dans /etc/cron.d/
Les travaux dans cron.d sont des travaux système, qui sont généralement utilisés pour plusieurs utilisateurs. C'est la raison pour laquelle le nom de l'utilisateur est nécessaire. MAILTO sur la première ligne est facultatif.
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 le seul différence.
Toujours à partir de la même page de manuel :
Ces "surnoms" spéciaux de spécification de l'heure sont pris en charge, ils remplacent les 5 champs d'heure et de date initiaux et sont préfixés par le caractère '@' :
@reboot :Exécuter une fois après le redémarrage.
Ainsi, votre inférence que la bonne façon d'utiliser @reboot est
@reboot user_name command
est correct .
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 ex. /etc/cron.d/mycronfile, vous devez mettre l'utilisateur :
@reboot root /root/mycommand