Dalla pagina man di crontab:
Lavori in /etc/cron.d/
I lavori in cron.d sono lavori di sistema, che vengono solitamente utilizzati da più di un utente. Questo è il motivo per cui è necessario il nome dell'utente. MAILTO sulla prima riga è facoltativo.
ESEMPIO DI LAVORO IN /etc/cron.d/job
#login as root
#create job with preferred editor (e.g. vim)
MAILTO=root
* * * * * root touch /tmp/file
Questa è l'intera sezione su crontab in /etc , quindi immagino che l'inclusione dell'utente sotto il cui nome viene eseguito il lavoro sia davvero l'unico differenza.
Sempre dalla stessa pagina man:
Sono supportati questi "soprannomi" con specifiche temporali speciali, che sostituiscono i 5 campi iniziali di data e ora e sono preceduti dal carattere '@':
@reboot :Esegui una volta dopo il riavvio.
Quindi la tua deduzione che il modo corretto di usare @reboot è
@reboot user_name command
è corretto .
Se lo stai eseguendo in modo interattivo come di seguito, non specifichi l'utente:
crontab -e
@reboot /root/mycommand
Se lo stai inserendo come file in /etc/cron.d, ad es. /etc/cron.d/mycronfile, devi inserire l'utente:
@reboot root /root/mycommand