Jaka jest różnica między cron.d (jak w /etc/cron.d/) i crontab?

18

Jaka jest główna różnica między katalogiem cron.d (as in /etc/cron.d/) a crontab?

O ile rozumiem, można utworzyć plik podobny do tego /etc/cron.d/my_non_crontab_cronjobsi umieścić w nim wszystko, co się chce, tak jak można to zrobić crontabza pośrednictwem crontab -e.

Jaka jest główna różnica między nimi?

Arcticooling
źródło
lokalizacja w systemie i format.
Rui F Ribeiro
Format? Z 2 przykładów, które widziałem, ma również składnię 5 jednostek czasu, lub mylę to crontab.
Arcticooling

Odpowiedzi:

24

Różnice są szczegółowo opisane na stronie cron(8)podręcznika Debiana. Główną różnicą jest to, że /etc/cron.dsą zapełniane osobnymi plikami, podczas gdy crontabzarządza jednym plikiem na użytkownika; dzięki temu łatwiej jest zarządzać zawartością /etc/cron.dskryptów (w przypadku automatycznej instalacji i aktualizacji) oraz łatwiej zarządzać crontabza pomocą edytora (naprawdę dla użytkowników końcowych).

Inne ważne różnice polegają na tym, że nie wszystkie wersje obsługują /etc/cron.di że pliki /etc/cron.dmuszą spełniać pewną liczbę wymagań (poza ważnymi zadaniami cron): muszą być własnością użytkownika root i muszą być zgodne z run-partskonwencjami nazewnictwa ( bez kropek , tylko litery, cyfry, podkreślenia i łączniki).

Jeśli rozważasz użyciu /etc/cron.d, to zwykle warto rozważyć jeden /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly, lub /etc/cron.monthlyzamiast.

Stephen Kitt
źródło
1
I na przykład w świecie rzeczywistym elementy cron.dsą zwykle dodawane podczas instalacji pakietu, podczas gdy różne crontabpliki są pełne rzeczy utworzonych przez odpowiedniego użytkownika. IE, pakiet certbotlub letsencryptwstawia wpis cron.d- zanim pakiet był dostępny, sysadmin (root) dodałby wpis u użytkownika root crontabwskazujący na skrypt powłoki / etc. w celu zapewnienia aktualności certyfikatów.
ivanivan
Dzięki Stephen! Dlaczego polecasz korzystanie z katalogów CRON co godzinę / tydzień / miesiąc? A BTW, dlaczego strona man nazywa się cron (8), co oznacza 8 dla (strona man dla crontab o nazwie crontab (1)).
Arcticooling
1
@Arcticooling, zobacz to pytanie, aby uzyskać wyjaśnienie(8)
user4556274
Katalogi godzinowe itp. Ułatwiają dodawanie zadań (nie trzeba dokładnie ustalać składni), a co ważniejsze, pozwalają systemowi zmieniać rzeczywisty czas wykonania w zależności od okoliczności; jest to szczególnie przydatne w systemach, które nie zawsze są włączone anacron.
Stephen Kitt
1
Wadą hourly|daily|weekly|monthlykatalogów jest to, że (AFAICT) zawsze działają jako root i nie obsługują bezpośrednio uruchamiania z mniejszymi uprawnieniami.
ilkkachu
5

Powiedziałbym, że główna różnica jest oczywista: /etc/crontabi /etc/cron.dnie są modyfikowalni przez zwykłych użytkowników, podczas gdy użytkownicy określają /var/spool/cronto, co crontabedytuje narzędzie. (Z zastrzeżeniem cron.allowi cron.denyoczywiście.) Oczywiście w systemie, w którym jesteś administratorem, możesz użyć jednego z nich. W systemie współdzielonym zwykli użytkownicy mogą używać tylko jednego.

Związane jest to z dodatkowym polem w plikach systemowych, nazwą użytkownika, pod którą działa zadanie.

ilkkachu
źródło