Różnica między / etc / crontab i „crontab -e”

42

Jaka jest różnica między znajdującym się w /etc/crontabnim plikiem crontab a plikiem crontab, które można edytować za pomocą crontab -e?

jrdioko
źródło

Odpowiedzi:

51

Jak powiedział Ignacio, /etc/crontabjest to systemowy crontab.

Format /etc/crontabjest następujący:

# m h dom mon dow user      command
*   *  *   *   *  someuser  echo 'foo'

chociaż crontab -ejest na użytkownika, warto wspomnieć bez -uargumentu, że komenda crontab trafia do crontabu obecnych użytkowników. Możesz zrobić, crontab -e -u <username>aby edytować crontab określonego użytkownika.

Zauważ, że w tabeli crontab na użytkownika nie ma pola „użytkownik”.

# m h  dom mon dow  command
*   *   *   *   *   echo 'foo'

Aspekt crontabów, który może być mylący, polega na tym, że root ma również własną crontab. np. crontab -e -u rootnie będzie edytować /etc/crontab Zobacz Konfigurowanie crona .

W większości dystrybucji Linuksa pliki crontab na użytkownika są zwykle przechowywane w: /var/spool/cron/crontabs/<username>(vixie-cron).

Dystrybucje oparte na RHEL są przechowywane w /var/spool/cron/<username>. (cronie)

skrewler
źródło
Do Twojej wiadomości, powyższa ścieżka jest niepoprawna: tabele crontab dla użytkownika są przechowywane w / var / spool / cron / crontabs / <nazwa użytkownika> (dwukrotnie próbowałem przesłać tę prostą poprawkę.)
MartyMacGyver
1
... i jest teraz poprawione.
MartyMacGyver
W rzeczywistości jest on przechowywany w /var/spool/cron/rootpliku crontab użytkownika root na systemie RHEL 6. Nie sprawdziłem Ubuntu, ale powiedzenie „zazwyczaj” wydaje się nieco skomplikowane.
Wildcard
@Wildcard Myślę, że „zazwyczaj” jest dobrym słowem w użyciu. RHEL distros ship w / "cronie" (i anacron, jak sądzę), który jest ich rozwidleniem ISC-Cron / vixie cron. Nie sądzę, żeby to było trudne, w każdym razie zaktualizowałem swoją odpowiedź, aby zawierała więcej szczegółów.
skrewler
Aby szybko wyszukać ścieżki między dystrybucjami, wyszukaj ciąg path[crontabs]w bibliotece „ścieżek” CFEngine i sprawdź kontekst (poprzednie linie kontekstu wyglądają np redhat::.). Jest więcej odmian niż myślisz; np. SUSE je umieszcza /var/spool/cron/tabs. (Wyodrębnianie różnic dystrybucyjnych jest jednym z powodów, dla których CFEngine zostało pierwotnie stworzone, więc często jest to dobre odniesienie.)
Wildcard,
5

Jeden to crontab systemowy i może być edytowany tylko przez root, a drugi to crontab użytkownika i może być edytowany przez użytkownika i istnieje dla każdego użytkownika.

Ignacio Vazquez-Abrams
źródło