Jak korzystać z @reboot w /etc/cron.d

17

Migruję pliki crontab poszczególnych użytkowników do /etc/cron.d, ponieważ pozwoliłoby to na prawidłowe tworzenie kopii zapasowych, przywracanie i wersjonowanie.

Jak do tej pory, jak rozumiem, jedyną różnicą między crontabami użytkownika a tymi itp. Jest to, że musisz określić użytkownika jako szóstą kolumnę. Czy to jest poprawne?

I moje główne pytanie, na które nie mogłem znaleźć odpowiedzi w dowolnym miejscu w Internecie: Jaki jest właściwy sposób użycia @rebootw /etc/cron.d lub / etc / crontab?

coś jak @reboot root command?

hyperknot
źródło

Odpowiedzi:

20

Ze strony podręcznika crontab :

Praca w /etc/cron.d/

Zadania w cron.d są zadaniami systemowymi, które są zwykle używane dla więcej niż jednego użytkownika. Właśnie dlatego potrzebna jest nazwa użytkownika. MAILTO w pierwszej linii jest opcjonalne.

PRZYKŁAD PRACY W /etc/cron.d/job

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

To cała sekcja o crontabie w / etc , więc sądzę, że włączenie użytkownika, pod którego nazwą zadanie jest uruchomione, jest rzeczywiście jedyną różnicą.

Znów z tej samej strony podręcznika:

Obsługiwane są te specjalne pseudonimy specyfikacji czasu, które zastępują 5 początkowych pól godziny i daty i są poprzedzone znakiem „@”:

@ reboot: Uruchom raz po restarcie.

Zatem wnioskujesz, że właściwym sposobem korzystania z @reboot jest

   @reboot user_name command

jest poprawne .

MariusMatutiae
źródło
1

W razie /etc/crontabpotrzeby wystarczy dodać te linie.

@reboot        command

Gdzie polecenie może być dowolnym skryptem lub pojedynczym plikiem.

Kryszna
źródło
Czy to działa? /etc/crontabzwykle wymaga nazwy użytkownika.
mwfearnley,
1

Jeśli uruchamiasz go interaktywnie, jak poniżej, nie określasz użytkownika:

crontab -e
@reboot /root/mycommand

Jeśli umieszczasz go jako plik w /etc/cron.d, np. /Etc/cron.d/mycronfile, musisz umieścić użytkownika:

@reboot root /root/mycommand
Wadih M.
źródło