วิธีการเปลี่ยนเวลา cron.daily ทำงานใน linux


22

ฉันมีสคริปต์เป็น cron.daily ที่ทำงานในบางเวลาทุกเช้า ฉันต้องการเปลี่ยนเวลาที่ใช้งานอยู่

ฉันจะเปลี่ยนเวลา cron.daily เรียกใช้สคริปต์ได้อย่างไร

linux  cron  redhat 

คำตอบ:


24

ใน Red Hat 5 หรือเก่ากว่าจะมีการควบคุมสิ่ง/etc/crontabต่อไปนี้

/etc/anacrontabเวอร์ชั่นใหม่ใช้ โดยค่าเริ่มต้นcron.dailyสคริปต์จะทำงานที่ 4:02 การแก้ไข/etc/crontabจะแก้ไขเวลานั้น

# 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

บนระบบ Debian / Ubuntu สิ่งนี้จะถูกควบคุม/etc/crontabเช่นกัน

ตัวอย่างเช่น; การติดตั้งเริ่มต้นของ 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 )
#

และในทั้งสองกรณีคุณอาจพบรายละเอียดเพิ่มเติมเกี่ยวกับไวยากรณ์ที่จะใช้ที่นี่: http://linux.die.net/man/5/crontabหรือทำงานman 5 crontabบนระบบ Linux เกือบทุกระบบ


3
อย่าลืมที่จะดำเนินการsudo systemctl restart cron.serviceหลังจากที่คุณแก้ไข สิ่งนี้เป็นจริงสำหรับsystemdระบบพื้นฐานเช่น Debian และ Ubuntu ที่ทันสมัย
TranslucentCloud

3

ใน RHEL / CentOS 6 ขึ้นไป

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

ดังนั้นเพื่อตอบคำถามเกี่ยวกับวิธีการเปลี่ยนแปลงเวลาที่ใช้งานฉันต้องแก้ไข START_HOURS_RANGE ให้ถูกต้องหรือไม่
thelr

1

ใน openSUSE crontab จะมีลักษณะดังนี้:

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-cronsคำสั่งตรวจสอบการประทับเวลาของไฟล์ใน/var/spool/cron/lastrunหมู่สิ่งอื่น ๆ เมื่อเวลาตั้งแต่การดำเนินการครั้งสุดท้ายหมดอายุมันจะเรียกใช้ไฟล์ cron อีกครั้ง

เวลาสามารถมีอิทธิพลโดยการสัมผัสไฟล์ ตัวอย่างเช่นหากต้องการตั้งเป็น 2012-11-17 03:15:

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

0

หากไม่มีเส้นตรงสิ่งนี้จะไม่แก้ไขอะไรเลย

ลองค้นหาที่พูดถึง cron.daily ด้วย

grep -R cron.daily /etc

จากนั้นนำมาจากที่นั่น


คุณต้องระวังให้มากถ้าคุณใช้คำสั่งเหล่านี้ ตัวอย่างเช่นสำหรับ RedHat ของฉันมันจะส่งคืนไฟล์ / etc / crontab และ / etc / anacrontab และถ้าคุณลบบรรทัดที่มีรายการ cron.daily คุณเพียงแค่ปิดการใช้งานสคริปต์ทั้งหมดซึ่งควรรันทุกวัน (สำหรับฉันมันคือ logrotate, tmpwatch, cups และอื่น ๆ )
Lukasz Stelmach

2
ฉันไม่แนะนำให้ลบบรรทัดคำถามคือที่ที่จะแก้ไขเวลา cron.daily นี่คือวิธีที่คุณค้นหา (ดังนั้นนี่จึงเป็น "คำตอบที่ช่วยให้พวกเขาช่วยเหลือตัวเอง")

-1

คุณต้องการทำสองสิ่ง:

  1. ลบสคริปต์ออกจาก cron.daily และใส่ในที่อื่น
  2. เพิ่มรายการใน crontab ของคุณเพื่อเรียกใช้สคริปต์ที่ระบุ ณ เวลาที่ระบุ:

00 10 * * * /path/to/script

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