Kiedy działa `cron.daily`?


199

Kiedy wpisy cron.daily(i .weeklya .hourly) metę i jest konfigurowalny?

Nie znalazłem ostatecznej odpowiedzi na to pytanie i mam nadzieję, że jest jedna.

Używam RHEL5 i CentOS 4, ale dla innych dystrybucji / platform też byłoby świetnie.


2
Na NetBSD czasy dziennych, tygodniowych, miesięcznych cronjobs są ustawione w crontab roota.
hd1

To pytanie byłoby bardziej przydatne, gdyby pytanie było edytowane w sposób bardziej ogólny. Przynajmniej spraw, aby pytanie było ogólne dla każdej wersji redhat, centos distros zamiast tylko dla wersji 4 i 5 (które nie są powszechnie używane i są „ końcem produkcji ” (podobnym do końca życia )
Trevor Boyd Smith

@TrevorBoydSmith - to pytanie zostało zadane prawie 8 lat temu. Zapytaj jedną zaktualizowaną o nowsze wersje. Ale RHEL 6 nawet nie istniał w kwietniu 2010: access.redhat.com/articles/3078#RHEL6
warren

@warren moim zamiarem nie jest krytykowanie, ale po prostu poprawienie pytania i przepływu stosu w ogóle. (Rozumiem, że RHEL 6 nie istniał, gdy pytanie zostało zadane. ponieważ pytanie ma teraz tak wiele głosów poparcia, byłoby miło mieć bardziej ogólny).
Trevor Boyd Smith

@TrevorBoydSmith .. odpowiedź na CentOS / RHEL 6 już istnieje :) ... Z przyjemnością zatwierdzę dobre zmiany, jeśli masz jakieś pomysły. Śmiało i wprowadź sugerowane zmiany do pytania, o którym pomyślałeś
warren

Odpowiedzi:


151

W przypadku wspomnianych dystrybucji:

Na CentOS 5.4 (powinien być taki sam dla RHEL5)

grep run-parts /etc/crontab

01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly

Więc cron.daily działa o 04:02.

To samo na CentOS 4.8


1
Czy jest jakiś powód tego? Mogę tylko założyć, że będzie to najcichszy czas na serwerze.
The Pixel Developer

@ o której godzinie działa w Ubuntu? czy możesz mi powiedzieć, jak to sprawdzić? nie jestem w stanie zrozumieć wyniku polecenia
Narendra Jaggi

@NarendraJaggi polecenie „run-parts” oznacza „uruchom wszystko w tym folderze”. Foldery cron.daily itp. Działają, ponieważ istnieje zadanie cron do wykonania części wykonawczych w tych katalogach. Więc grep run-parts /etc/crontabpo prostu znajduje instrukcje, kiedy wywoływane są części robocze dla każdego z tych katalogów.
Jordan Reiter

2
To już nie jest poprawna odpowiedź dla CentOS 6 lub wyższej, przewiń w dół, aby uzyskać więcej.
lzap

74

Ze strony podręcznika:

 Cron also searches for /etc/anacrontab

/etc/anacrontab w moim systemie (Fedora 12):

1       5       cron.daily              nice run-parts /etc/cron.daily
7       25      cron.weekly             nice run-parts /etc/cron.weekly
@monthly 45     cron.monthly            nice run-parts /etc/cron.monthly

Zobacz też man anacrontab


6
Tak jest w przypadku CentOS 6. Dzięki.
mbrownnyc

3
To oznacza 5 rano co „1” dni ?. Przepraszam, ale to nic nie odpowiada.
elysch

3
@elysch Powtórzę ostatnią linijkę mojej odpowiedzi: Zobacz także „man anacrontab”
leonbloy

2
Dobre wyjaśnienie anakronu tutaj . Zasadniczo anakron nie ma ustalonego czasu rozpoczęcia , ale raczej rozpocznie proces na podstawie czasu ostatniego procesu z określonym opóźnieniem. Jeśli maszyna jest wyłączona, gdy proces powinien zostać uruchomiony , rozpocznie się po jego ponownym uruchomieniu, po określonym opóźnieniu (bez żadnych specjalnych zakresów + losowe opóźnienie, patrz odpowiedź @spechal).
storm_m2138

2
@mbrownnyc, a także CentOS-7
Trevor Boyd Smith

43

W przypadku CentOS 6 musisz grep / etc / anacrontab, a odpowiedź różni się, jeśli serwer / laptop / dekstop / etc został wyłączony, czy nie.

cat /etc/anacrontab 
# /etc/anacrontab: configuration file for anacron

# See anacron(8) and anacrontab(5) for details.

SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# the maximal random delay added to the base delay of the jobs
RANDOM_DELAY=45
# the jobs will be started during the following hours only
START_HOURS_RANGE=3-22

#period in days   delay in minutes   job-identifier   command
1   5   cron.daily      nice run-parts /etc/cron.daily
7   25  cron.weekly     nice run-parts /etc/cron.weekly
@monthly 45 cron.monthly        nice run-parts /etc/cron.monthly

Tak więc między godziną 3 nad ranem a 10 po południu (po ponownym uruchomieniu i po uruchomieniu maszyny przez 5 minut ^^) uruchom /etc/cron.daily. Jeśli nie ma ponownego uruchomienia, zadanie powinno działać o 3:05 AM++.

** As defined by START_HOURS_RANGE
^^ As defined by FIELD_TWO (i.e. the 5 after the 1 in the cron.daily line)
++ plus a random time between 0 and 45 minutes as defined by RANDOM_DELAY

Odniesienie: http://linux.die.net/man/5/anacrontab


14

W systemach SuSE (w szczególności SLES 11.1 i openSuSE 10.3) dzienny czas działania skryptów /etc/cron.daily jest kontrolowany przez wartość zmiennej DAILY_TIME ustawionej w pliku / etc / sysconfig / cron .

Jeśli zmienna DAILY_TIME nie jest ustawiona, domyślnie jest to: (czas ostatniego rozruchu + 15 minut).


wielkie dzięki! SuSE jest dla mnie raczej nieprzejrzysty i doceniam twoją odpowiedź.
dr0i

9

Na Ubuntu znajdziesz plik / etc / crontab, z którego jest on skonfigurowany. Myślę, że jest to coś podobnego w RH i Centos.


2
To jest właściwy plik dla Ubuntu Lucid 10.04 LTS. Moje domyślne ustawienie to 6:25 dla cron.daily.
geekQ

Nadal ustawiony jako 06:25 na Ubuntu 15.04. Ale zauważam, że cron musi wprowadzić losowość w czasie, gdy zaczyna zadania. Patrząc na znaczniki czasowe plików, które tworzy moja codzienna praca, widzę, że w niektóre dni działa już o 6:26, a w innych dopiero o 8:04.
Stéphane

1
Nadal ustawiony na 6:25 rano na Ubuntu 16.04 - Co godzinę o 17 minut po godzinie. Codziennie o 6:25. Co tydzień o 6:47 w sobotę. Co miesiąc o 6:52 pierwszego dnia miesiąca.
WinEunuuchs2Unix

5

CentOS6.x / RedHat6.x domyślnie instaluje pakiet cronie-anacron. Musisz:

mniam zainstaluj cronie-noanacron

mniam usuń cronie-anacron

Następnie masz /etc/cron.d/dailyjobs, aby skonfigurować najlepszy czas harmonogramu dla codziennych, tygodniowych i miesięcznych zadań.


2
Jeśli anakron jest zainstalowany, nie możesz po prostu edytować / etc / anacrontab zgodnie z innymi komentarzami tutaj, zamiast go odinstalować?
cincodenada

1
@cincodenada Nie to sugeruje Daniel Stantos.
mikemaccana

4

Używam Slackware (14.0) i nie miałem /etc/crontab. Ponadto anacronnie jest częścią dystrybucji.

Rozwiązanie w moim systemie było tak proste, jak uruchomienie crontab -lroota:

root@flea:~# crontab -l
# If you don't want the output of a cron job mailed to you, you have to direct
# any output to /dev/null.  We'll do this here since these jobs should run
# properly on a newly installed system.  If a script fails, run-parts will
# mail a notice to root.
#
# Run the hourly, daily, weekly, and monthly cron jobs.
# Jobs that need different timing may be entered into the crontab as before,
# but most really don't need greater granularity than this.  If the exact
# times of the hourly, daily, weekly, and monthly cron jobs do not suit your
# needs, feel free to adjust them.
#
# Run hourly cron jobs at 47 minutes after the hour:
47 * * * * /usr/bin/run-parts /etc/cron.hourly 1> /dev/null
#
# Run daily cron jobs at 4:40 every day:
40 4 * * * /usr/bin/run-parts /etc/cron.daily 1> /dev/null
#
# Run weekly cron jobs at 4:30 on the first day of the week:
30 4 * * 0 /usr/bin/run-parts /etc/cron.weekly 1> /dev/null
#
# Run monthly cron jobs at 4:20 on the first day of the month:
20 4 1 * * /usr/bin/run-parts /etc/cron.monthly 1> /dev/null

3

Z /etc/anacrontabmojego systemu Ubuntu 9.10:

1       5       cron.daily       nice run-parts --report /etc/cron.daily
7       10      cron.weekly      nice run-parts --report /etc/cron.weekly
@monthly        15      cron.monthly nice run-parts --report /etc/cron.monthly

2

W przypadku Solaris nie ma takiego ułatwienia. Po prostu używaj regularnych wpisów crontab do codziennych zadań.


1

Aktualizacja OpenSuse 42.x:

/ etc / crontab pokazuje plik / usr / lib / cron / run-crons, który powinien działać co 15 minut.

/ usr / lib / cron / run-crons z kolei (zawiera wiersze kodu may), który szuka zmiennej o nazwie DAILY_TIME w / etc / sysconfig / cron

Plik pokazuje;

# At which time cron.daily should start. Default is 15 minutes after booting
# the system. Example setting would be "14:00".
# Due to the fact that cron script runs only every 15 minutes,
# it will only run on xx:00, xx:15, xx:30, xx:45, not at the accurate time
# you set.

DAILY_TIME=""

Ustaw czas, którego potrzebujesz i zrestartuj crona za pośrednictwem;

systemctl restart cron.service
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.