Khi nào cron chạy cronjobs hàng tháng?
cron
bắt đầu cronjobs hàng tháng một lần một tháng tại /var/spool/cron/lastrun/cron.monthly
Thời gian sửa đổi (hoặc chính xác hơn, đôi khi trong phạm vi 15 phút sau thời gian đó).
Bạn có thể thấy rằng trong /usr/lib/cron/run-crons
, được bắt đầu mỗi 15 phút trong /etc/crontab
:
# 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
Khi giao dịch với cronjobs hàng tháng /usr/lib/cron/run-crons
:
Kiểm tra xem cron.monthly
trong /var/spool/cron/lastrun/
lớn hơn một tháng.
Bỏ qua cronjobs hàng tháng nếu không.
Nếu không, xóa tệp khóa:
eval find $SPOOL/$BASE $TIME | \
xargs --no-run-if-empty rm
thêm cronjob hàng tháng vào danh sách chạy:
if test ! -e $SPOOL/$BASE ; then
# accept this dir, if it isn't empty
LIST=`find $CRONDIR ! -type d`
if [ ! -z "$LIST" ] ; then
RUN="${RUN} ${TIME_EXT}"
fi
fi
và điều hành công việc.
Làm thế nào tôi có thể lên lịch cronjobs hàng tháng?
Nếu bạn muốn các cronjobs hàng tháng chạy ngay bây giờ (nghĩa là trong 15 phút tiếp theo), hãy xóa /var/spool/cron/lastrun/cron.monthly
.
Nếu bạn muốn các cronjobs hàng tháng chạy vào lúc 3 giờ sáng bắt đầu từ hôm nay, hãy làm:
$ touch -d "$(date -d "3am last month")" /var/spool/cron/lastrun/cron.monthly
Sửa đổi lệnh trên theo nhu cầu của bạn.
Các DAILY_TIME
biến
Các DAILY_TIME
biến chỉ áp dụng cho các công việc định kỳ hàng ngày, như có thể thấy trong /usr/lib/cron/run-crons
và được ghi lại trong /etc/sysconfig/cron
:
# At which time cron.daily should start. (...)
DAILY_TIME=""