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?
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?
Câu trả lời:
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.daily
các tập lệnh được chạy ở 4:02. Chỉnh sửa /etc/crontab
sẽ 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 crontab
trên hầu hết mọi hệ thống Linux.
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
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-crons
lệnh xác minh timestamps của các tập tin trong /var/spool/cron/lastrun
số 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
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 muốn làm hai điều:
00 10 * * * /path/to/script
sudo systemctl restart cron.service
sau khi bạn sửa đổi điều này. Điều này đúng vớisystemd
các hệ thống dựa trên nền tảng, chẳng hạn như Debian và Ubuntu hiện đại.