Khi nào `cron.d Daily` chạy?


199

Khi nào các mục trong cron.daily( .weekly.hourly) chạy, và nó có thể cấu hình được không?

Tôi chưa tìm thấy câu trả lời dứt khoát cho vấn đề này và tôi hy vọng có một câu trả lời.

Tôi đang chạy RHEL5 và CentOS 4, nhưng đối với các bản phân phối / nền tảng khác cũng sẽ rất tuyệt.


2
Trên NetBSD , thời gian cho các cronjob hàng ngày, hàng tuần, hàng tháng được đặt trong crontab của root.
hd1

Câu hỏi này sẽ hữu ích hơn nếu câu hỏi được chỉnh sửa để chung chung hơn. Ít nhất là làm cho câu hỏi chung chung cho bất kỳ phiên bản redhat, centos distro nào thay vì chỉ cho phiên bản 4 và 5 (không được sử dụng rộng rãi và là " kết thúc sản xuất " (tương tự như cuối đời ).
Trevor Boyd Smith

@TrevorBoydSmith - câu hỏi này đã được hỏi gần 8 năm trước. Hãy hỏi một bản cập nhật cho các phiên bản mới hơn. Nhưng RHEL 6 thậm chí không tồn tại vào tháng 4 năm 2010: access.redhat.com/articles/3078#RHEL6
warren

@warren Ý định của tôi không phải là chỉ trích mà chỉ là cải thiện câu hỏi và stackoverflow nói chung. (i hiểu rằng RHEL 6 không tồn tại khi câu hỏi được hỏi vì câu hỏi có soo nhiều upvotes bây giờ nó sẽ được tốt đẹp để có nó chung chung hơn..)
Trevor Boyd Smith

@TrevorBoydSmith .. đã có câu trả lời cho CentOS / RHEL 6 rồi :) ... Tôi rất vui lòng chấp thuận các chỉnh sửa tốt từ bạn nếu bạn có một số ý tưởng. Hãy tiếp tục và thực hiện các chỉnh sửa được đề xuất cho câu hỏi mà bạn đã nghĩ đến
warren

Câu trả lời:


151

Đối với các bản phân phối bạn đề cập:

Trên CentOS 5.4 (Nên giống với 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

Vì vậy, cron.d Daily chạy lúc 04:02 sáng.

Tương tự trên CentOS 4.8


1
Có bất kỳ lý do đằng sau này? Tôi chỉ có thể cho rằng đó là thời gian yên tĩnh nhất trên máy chủ.
Nhà phát triển Pixel

@ thời gian nào nó chạy trong Ubuntu? bạn có thể vui lòng cho biết làm thế nào tôi có thể kiểm tra nó? tôi không thể hiểu đầu ra lệnh
Narendra Jaggi

@NarendraJaggi lệnh "run-tùng" có nghĩa là "chạy mọi thứ trong thư mục này". Các thư mục cron.d Daily, v.v. hoạt động vì có một công việc cron để thực thi các phần chạy trên các thư mục này. Vì vậy, grep run-parts /etc/crontabchỉ cần tìm hướng dẫn khi các phần chạy được gọi cho mỗi thư mục này.
Jordan Reiter

2
Đây không còn là câu trả lời hợp lệ cho CentOS 6 trở lên, hãy cuộn xuống để biết thêm.
lzap

74

Từ trang người đàn ông:

 Cron also searches for /etc/anacrontab

/etc/anacrontab trong hệ thống của tôi (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

Xem thêm man anacrontab


6
Đây là trường hợp với CentOS 6. Cảm ơn.
mbrownnyc

3
Điều đó có nghĩa là 5 giờ sáng cứ sau "1" ngày?. Xin lỗi, nhưng câu trả lời này không có gì.
elysch

3
@elysch Hãy để tôi nhắc lại dòng cuối cùng của câu trả lời của tôi: Xem thêm "man anacrontab"
leonbloy

2
Giải thích tốt về anacron ở đây . Về cơ bản, anacronkhông gian bắt đầu cố định , mà là sẽ bắt đầu quá trình dựa trên thời điểm quá trình cuối cùng chạy, với một sự chậm trễ nhất định. Nếu máy tắt khi quá trình nên chạy , thì nó sẽ bắt đầu quá trình khi máy hoạt động trở lại, sau độ trễ được chỉ định (không có phạm vi đặc biệt + độ trễ ngẫu nhiên, xem câu trả lời của @spechal).
bão_m2138

2
@mbrownnyc và cả CentOS-7 nữa
Trevor Boyd Smith

43

Đối với CentOS 6, bạn cần grep / etc / anacrontab và câu trả lời sẽ thay đổi nếu máy chủ / máy tính xách tay / dekstop / etc đã bị tắt hay chưa.

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

Vì vậy, trong khoảng thời gian từ 3 giờ sáng đến 10 giờ tối (sau khi khởi động lại và sau khi máy đã hoạt động được 5 phút ^^), hãy chạy /etc/cron.d Daily. Nếu không có khởi động lại, công việc sẽ chạy vào lúc 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

Tham khảo: http://linux.die.net/man/5/anacrontab


14

Đối với các hệ thống SuSE (cụ thể là SLES 11.1 và openSuSE 10.3), thời gian chạy hàng ngày của tập lệnh /etc/cron.daily được kiểm soát bởi giá trị của biến DAILY_TIME được đặt trong tệp / etc / sysconfig / cron .

Nếu biến DAILY_TIME không được đặt, nó sẽ mặc định là: (thời gian khởi động lần cuối + 15 phút).


cảm ơn nhiều! SuSE khá mờ đối với tôi và tôi đánh giá cao câu trả lời của bạn.
dr0i

9

Trên Ubuntu, bạn sẽ tìm thấy một tập tin / etc / crontab, từ đó cấu hình này. Tôi đoán nó là một cái gì đó tương tự trên RH và Centos.


2
Đây là tệp phù hợp cho Ubuntu Lucid 10.04 LTS. Cài đặt mặc định của tôi là 6:25 sáng cho cron.d Daily.
geekQ

Vẫn được đặt là 6:25 sáng trên Ubuntu 15.04. Nhưng tôi nhận thấy rằng cron phải chèn một số ngẫu nhiên trong thời gian nó bắt đầu công việc. Nhìn vào dấu thời gian của các tệp mà công việc hàng ngày của tôi tạo ra, tôi thấy vào một số ngày, nó chạy sớm nhất là 6:26 và trên các tệp khác muộn nhất là 8:04 sáng.
Stéphane

1
Vẫn được đặt lúc 6:25 sáng trên Ubuntu 16.04 - Hàng giờ lúc 17 phút trước. Hàng ngày lúc 6:25 sáng. Hàng tuần lúc 6:47 sáng thứ bảy. Hàng tháng vào lúc 6:51 sáng ngày đầu tiên của tháng.
WinEunuuchs2Unix

5

CentOS6.x / RedHat6.x cài đặt theo mặc định gói cronie-anacron. Bạn phải:

yum cài đặt cronie-noanacron

yum xóa cronie-anacron

Sau đó, bạn có /etc/cron.d/dailyjobs để định cấu hình thời gian lịch biểu tốt nhất cho công việc hàng ngày, hàng tuần và hàng tháng của bạn.


2
Nếu anacron được cài đặt, bạn không thể chỉnh sửa / etc / anacrontab như các bình luận khác ở đây thay vì gỡ cài đặt nó?
cincodenada

1
@cincodenada Đó không phải là những gì Daniel Stantos đang đề xuất.
mikemaccana

4

Tôi sử dụng Slackware (14.0) và không có /etc/crontab. Ngoài ra, anacronkhông phải là một phần của phân phối.

Giải pháp trên hệ thống của tôi đơn giản như chạy crontab -lbằng root:

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

Từ /etc/anacrontabtrên hệ thống Ubuntu 9.10 của tôi:

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

Không có cơ sở nào như Solaris có liên quan. Chỉ cần sử dụng các mục crontab thông thường cho các nhiệm vụ hàng ngày.


1

Cập nhật OpenSuse 42.x:

/ etc / crontab hiển thị một tệp / usr / lib / cron / run-crons được cho là chạy cứ sau 15 phút.

lần lượt / usr / lib / cron / run-crons (có thể có các dòng mã) đang tìm kiếm một biến có tên DAILY_TIME trong / etc / sysconfig / cron

Các tập tin cho thấy;

# 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=""

Đặt nó vào thời gian bạn cần và khởi động lại cron qua;

systemctl restart cron.service
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.