`cron.daily` ทำงานเมื่อใด


199

เมื่อใดที่รายการในcron.daily(และ.weeklyและ.hourly) เรียกใช้และตั้งค่าได้หรือไม่

ฉันไม่พบคำตอบที่ชัดเจนและหวังว่าจะมีคำตอบ

ฉันกำลังใช้ RHEL5 และ CentOS 4 แต่สำหรับ distros / แพลตฟอร์มอื่น ๆ ก็ยอดเยี่ยมเช่นกัน


2
บนNetBSDเวลาสำหรับ cronjobs รายวันรายสัปดาห์รายเดือนจะถูกตั้งค่าใน crontab ของรูท
hd1

คำถามนี้จะมีประโยชน์มากขึ้นถ้าคำถามถูกแก้ไขให้เป็นแบบทั่วไปมากขึ้น อย่างน้อยก็ทำให้คำถามทั่วไปสำหรับ redhat รุ่นใด centos distros แทนที่จะเป็นรุ่น 4 และ 5 (ซึ่งไม่ได้ใช้กันอย่างแพร่หลายและเป็น " จุดสิ้นสุดของการผลิต " (คล้ายกับจุดสิ้นสุดของชีวิต )
Trevor Boyd Smith

@TrevorBoydSmith - คำถามนี้ถูกถามเมื่อ 8 ปีที่แล้ว อย่าลังเลที่จะขออัปเดตหนึ่งรุ่นที่ใหม่กว่า แต่ RHEL 6 ไม่มีอยู่ในเดือนเมษายน 2010: access.redhat.com/articles/3078#RHEL6
warren

@warren เจตนาของฉันไม่ได้เป็นการวิพากษ์วิจารณ์ แต่เพียงปรับปรุงคำถามและ stackoverflow โดยทั่วไป (ฉันเข้าใจว่า RHEL 6 ไม่มีอยู่เมื่อคำถามถูกถามเพราะคำถามมีการอัปโหลดจำนวนมากตอนนี้มันจะเป็นการดีถ้ามีเรื่องทั่ว ๆ ไป)
เทรเวอร์บอยด์สมิ ธ

@TrevorBoydSmith .. มีคำตอบสำหรับ CentOS / RHEL 6 อยู่แล้ว :) ... ฉันยินดีที่จะอนุมัติการแก้ไขที่ดีจากคุณหากคุณมีความคิด ไปข้างหน้าและแก้ไขข้อเสนอแนะสำหรับคำถามที่คุณเคยคิดไว้
วอร์เร

คำตอบ:


151

สำหรับการแจกแจงที่คุณพูดถึง:

บน CentOS 5.4 (ควรเหมือนกันสำหรับ 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

ดังนั้น cron.daily จึงวิ่งเวลา 04:02 น.

เหมือนกับ CentOS 4.8


1
มีเหตุผลอะไรที่อยู่เบื้องหลังเรื่องนี้? ฉันเดาได้แค่ว่ามันเป็นเวลาที่เงียบที่สุดบนเซิร์ฟเวอร์
The Pixel Developer

@ เวลาใดที่มันทำงานในอูบุนตู? คุณช่วยบอกได้ไหมว่าฉันสามารถตรวจสอบได้ ฉันไม่สามารถเข้าใจผลลัพธ์ของคำสั่งได้
Narendra Jaggi

@NarendraJaggi คำสั่ง "run-parts" หมายถึง "รันทุกอย่างในโฟลเดอร์นี้" โฟลเดอร์ cron.daily ฯลฯ ทำงานได้เนื่องจากมีงาน cron เพื่อเรียกใช้งานส่วนต่างๆในไดเรกทอรีเหล่านี้ ดังนั้นgrep run-parts /etc/crontabเพียงแค่ค้นหาคำแนะนำเมื่อเรียกใช้ส่วนต่างๆสำหรับแต่ละไดเรกทอรีเหล่านี้
Jordan Reiter

2
นี่ไม่ใช่คำตอบที่ถูกต้องสำหรับ CentOS 6 หรือสูงกว่าเลื่อนลงมาอีก
lzap

74

จากหน้าคน:

 Cron also searches for /etc/anacrontab

/etc/anacrontab ในระบบของฉัน (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

ดูสิ่งนี้ด้วย man anacrontab


6
CentOS 6นี้เป็นกรณีที่มี ขอบคุณ
mbrownnyc

3
นั่นหมายถึง 5am ทุกวัน "1" ขออภัย แต่นี่ไม่มีอะไรตอบ
elysch

3
@elysch ให้ฉันทำซ้ำบรรทัดสุดท้ายของคำตอบของฉัน: ดูเพิ่มเติม "man anacrontab"
leonbloy

2
คำอธิบายที่ดีของ anacron ที่นี่ โดยทั่วไปanacronมีเวลาเริ่มต้นไม่คงที่แต่จะเริ่มต้นกระบวนการขึ้นอยู่กับเมื่อกระบวนการสุดท้ายที่วิ่งด้วยระยะเวลาที่ระบุ หากเครื่องปิดเมื่อกระบวนการควรจะทำงานแล้วมันจะเริ่มกระบวนการเมื่อเครื่องกลับมาหลังจากความล่าช้าที่ระบุ (ยกเว้นไม่มีช่วงพิเศษ + ความล่าช้าแบบสุ่มดูคำตอบโดย @spechal)
storm_m2138

2
@mbrownnyc และ CentOS-7 ด้วย
เทรเวอร์บอยด์สมิ ธ

43

สำหรับ CentOS 6 คุณต้อง grep / etc / anacrontab และคำตอบจะแตกต่างกันไปหากเซิร์ฟเวอร์ / แล็ปท็อป / dekstop / etc ถูกปิดหรือไม่

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

ดังนั้นระหว่างเวลา 15.00 น. ถึง 22.00 น. (หลังจากรีบูตเครื่องและหลังเครื่องใช้งานได้ 5 นาที ^^) ให้รัน /etc/cron.daily หากไม่มีการรีบูตงานควรรันเวลา 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

การอ้างอิง: http://linux.die.net/man/5/anacrontab


14

สำหรับระบบ SuSE (เฉพาะ SLES 11.1 และ openSUSE 10.3) เวลาทำงานประจำวันของสคริปต์ /etc/cron.daily ถูกควบคุมโดยค่าของDAILY_TIMEชุดตัวแปรใน/ etc / sysconfig / cronไฟล์

หากไม่ได้ตั้งค่าตัวแปร DAILY_TIME ไว้ค่าเริ่มต้นจะเป็น: (เวลาบูตครั้งสุดท้าย + 15 นาที)


ขอบคุณมาก! SuSE ค่อนข้างทึบแสงสำหรับฉันและฉันขอขอบคุณคำตอบของคุณ
dr0i

9

บน Ubuntu คุณจะพบไฟล์ / etc / crontab จากที่กำหนดค่าไว้ ฉันเดาว่ามันคล้ายกับ RH และ Centos


2
ไฟล์นี้เป็นไฟล์ที่ถูกต้องสำหรับ Ubuntu Lucid 10.04 LTS การตั้งค่าเริ่มต้นของฉันคือ 6:25 น. สำหรับ cron.daily
geekQ

ยังตั้งเป็น 6:25 น. บน Ubuntu 15.04 แต่ฉันสังเกตเห็นว่า cron ต้องแทรกแบบสุ่มบางอย่างในเวลาที่เริ่มงาน เมื่อดูเวลาประทับของไฟล์ที่งานประจำวันของฉันสร้างขึ้นฉันเห็นว่าบางวันมันทำงานเร็วเท่าเวลา 6:26 น
Stéphane

1
ยังคงตั้งเวลา 6:25 น. บน Ubuntu 16.04 - ทุกชั่วโมงที่ 17 นาทีที่ผ่านมา ทุกวันเวลา 6:25 น. ทุกสัปดาห์เวลา 6:47 น. วันเสาร์ รายเดือนเวลา 6:52 น. วันแรกของเดือน
WinEunuuchs2Unix

5

CentOS6.x / RedHat6.x ติดตั้งตามค่าเริ่มต้นแพ็คเกจ cronie-anacron คุณต้อง:

ยำติดตั้ง cronie-noanacron

ยำลบ cronie-anacron

ตอนนี้คุณมี /etc/cron.d/dailyjobs เพื่อกำหนดเวลาที่ดีที่สุดสำหรับงานรายวันรายสัปดาห์และรายเดือนของคุณ


2
หากติดตั้ง anacron คุณจะไม่สามารถแก้ไข / etc / anacrontab ตามความคิดเห็นอื่นที่นี่แทนการถอนการติดตั้งหรือไม่
cincodenada

1
@cincodenada นั่นไม่ใช่สิ่งที่ Daniel Stantos แนะนำ
mikemaccana

4

ผมใช้ Slackware (14.0) /etc/crontabและไม่ได้มี นอกจากนี้anacronไม่ได้เป็นส่วนหนึ่งของการกระจาย

โซลูชันในระบบของฉันนั้นเรียบง่ายเหมือนใช้งานcrontab -lเป็น 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


2

ไม่มีสิ่งอำนวยความสะดวกเช่นนี้เท่าที่ Solaris เกี่ยวข้อง เพียงใช้รายการ crontab ปกติสำหรับงานประจำวัน


1

อัปเดต OpenSuse 42.x:

/ etc / crontab แสดงไฟล์ / usr / lib / cron / run-crons ที่ควรรันทุก 15 นาที

/ usr / lib / cron / run-crons ในทางกลับกัน (มีบรรทัดของรหัสอาจ) ซึ่งกำลังมองหาตัวแปรที่เรียกว่า DAILY_TIME ใน / etc / sysconfig / cron

ไฟล์แสดงให้เห็น;

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

ตั้งเวลาที่คุณต้องการและเริ่ม cron ใหม่ผ่านทาง;

systemctl restart cron.service
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.