Jak zmienić czas cron.daily jest uruchamiany w systemie Linux

22

Mam skrypt w cron.daily, który działa o określonej godzinie każdego ranka. Muszę zmienić czas działania.

Jak zmienić czas, w którym cron.daily uruchamia skrypty?


źródło

Odpowiedzi:

24

W Red Hat 5 lub starszym jest to kontrolowane w /etc/crontab.

Używaj nowszych wersji /etc/anacrontab. Domyślnie cron.dailyskrypty są uruchamiane o 4:02. Edycja /etc/crontabzmodyfikuje ten czas.

# run-parts
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

W systemach Debian / Ubuntu jest to również kontrolowane /etc/crontab.

Na przykład; domyślna instalacja Ubuntu 12.04:

# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#

W obu przypadkach możesz znaleźć więcej informacji na temat używanej składni tutaj: http://linux.die.net/man/5/crontab lub działając man 5 crontabna prawie każdym systemie Linux.

ewwhite
źródło
3
Nie zapomnij wykonać sudo systemctl restart cron.servicepo zmodyfikowaniu tego. Dotyczy to systemdsystemów opartych na systemach, takich jak nowoczesny Debian i Ubuntu.
TranslucentCloud,
3

w RHEL / CentOS 6 i nowszych

# /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
mohamed ahmed besha
źródło
Tak więc, aby odpowiedzieć na pytanie, jak zmienić czas, w którym działa, muszę edytować START_HOURS_RANGE, prawda?
thelr
1

W openSUSE crontab wygląda następująco:

SHELL=/bin/sh
PATH=/usr/bin:/usr/sbin:/sbin:/bin:/usr/lib/news/bin
MAILTO=root
#
# check scripts in cron.hourly, cron.daily, cron.weekly, and cron.monthly
#
-*/15 * * * *   root  test -x /usr/lib/cron/run-crons && /usr/lib/cron/run-crons >/dev/null 2>&1

run-cronsPolecenie weryfikuje sygnatury czasowe plików w /var/spool/cron/lastrunmiędzy innymi. Po upływie czasu od ostatniego wykonania ponownie uruchomi plik cron.

Dotykając pliku, można wpłynąć na czas. Na przykład, aby ustawić go na 2012-11-17 03:15:

touch -t 201211140315 /var/spool/cron/lastrun/cron.daily
vdboor
źródło
0

Jeśli linii nie było, nic to nie rozwiąże.

Spróbuj znaleźć, gdzie wspomniane jest cron.daily, za pomocą

grep -R cron.daily /etc

Więc weź to stamtąd.

mvds
źródło
Musisz być bardzo ostrożny, jeśli używasz tych poleceń. Na przykład dla mojego RedHata zwraca pliki / etc / crontab i / etc / anacrontab. A jeśli usuniesz wiersze z wpisem cron.daily, po prostu wyłącz wykonywanie wszystkich skryptów, które powinny być uruchamiane codziennie (dla mnie jest to logrotate, tmpwatch, puchary i tak dalej).
Łukasz Stelmach,
2
Nie zasugerowałem, aby usunąć linię, pytanie dotyczyło tego, gdzie zmodyfikować czas cron.daily. Oto jak go zlokalizować (więc była to raczej odpowiedź „pomóżcie sobie pomóc”)
-1

Chcesz zrobić dwie rzeczy:

  1. Usuń skrypt z cron.daily i umieść go w innym miejscu.
  2. Dodaj wpis do swojego crontab, aby uruchomić określony skrypt w określonym czasie:

00 10 * * * /path/to/script


źródło