Cách thay đổi thời gian cron.d Daily được chạy trong linux


22

Tôi có một đoạn script trong cron.d Daily chạy vào một thời điểm nhất định mỗi sáng. Tôi cần thay đổi thời gian nó được chạy.

Làm cách nào để thay đổi thời gian cron.d Daily chạy các tập lệnh?

linux  cron  redhat 

Câu trả lời:


24

Trên Red Hat 5 trở lên, điều này được kiểm soát /etc/crontab.

Phiên bản mới hơn sử dụng /etc/anacrontab. Theo mặc định, cron.dailycác tập lệnh được chạy ở 4:02. Chỉnh sửa /etc/crontabsẽ sửa đổi thời gian đó.

# 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

Trên các hệ thống Debian / Ubuntu, điều này cũng được kiểm soát /etc/crontab.

Ví dụ; bản cài đặt Ubuntu 12.04 mặc định:

# /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 )
#

Và trong cả hai trường hợp, bạn có thể tìm thấy thêm chi tiết về việc sử dụng cú pháp nào tại đây: http://linux.die.net/man/5/crontab hoặc bằng cách chạy man 5 crontabtrên hầu hết mọi hệ thống Linux.


3
Đừng quên thực hiện sudo systemctl restart cron.servicesau khi bạn sửa đổi điều này. Điều này đúng với systemdcác hệ thống dựa trên nền tảng, chẳng hạn như Debian và Ubuntu hiện đại.
translucentCloud

3

trong RHEL / CentOS 6 trở lên

# /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

Vì vậy, để trả lời câu hỏi làm thế nào để thay đổi thời gian chạy, tôi cần chỉnh sửa START_HOURS_RANGE, đúng không?
thelr

1

Trên openSUSE, crontab trông giống như:

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

Các run-cronslệnh xác minh timestamps của các tập tin trong /var/spool/cron/lastrunsố những thứ khác. Khi thời gian kể từ lần thực hiện cuối cùng hết hạn, nó sẽ chạy lại tệp cron.

Thời gian có thể bị ảnh hưởng bằng cách chạm vào tập tin. Ví dụ: để đặt thành 2012-11-17 03:15:

touch -t 201211140315 /var/spool/cron/lastrun/cron.daily

0

Nếu đường dây không có ở đó, điều này sẽ không giải quyết được gì.

Hãy thử tìm nơi cron.d Daily được đề cập, với

grep -R cron.daily /etc

Kê đên mang no đi tư bên đo.


Bạn phải rất cẩn thận nếu bạn sử dụng các lệnh này. Ví dụ với RedHat của tôi, nó trả về các tập tin / etc / crontab và / etc / anacrontab. Và nếu bạn loại bỏ các dòng có mục cron.d Daily, bạn chỉ cần tắt thực thi tất cả các tập lệnh sẽ được chạy hàng ngày (đối với tôi đó là logrotate, tmpwatch, cup, v.v.).
Lukasz Stelmach

2
Tôi không đề nghị xóa dòng, câu hỏi là nơi sửa đổi thời gian cron.d Daily. Đây là cách bạn xác định vị trí của nó (vì vậy đây là loại câu trả lời "giúp họ tự giúp mình")

-1

Bạn muốn làm hai điều:

  1. Xóa tập lệnh khỏi cron.d Daily và đặt vào một nơi khác.
  2. Thêm một mục vào crontab của bạn để chạy tập lệnh được chỉ định tại thời điểm được chỉ định:

00 10 * * * /path/to/script

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.