Tôi đã cố gắng loại bỏ nhiều lỗi phổ biến,
đảm bảo rằng các PATH có sẵn cho cron
có một dòng cuối ở cuối tập tin crontab
múi giờ được thiết lập bởi:
cd /etc cp /usr/share/zoneinfo/Asia/Singapore /etc/localtime
Chạy date
trong bash, tôi nhận được:
Tue Sep 17 15:14:30 SGT 2013
Để kiểm tra xem cron có đang sử dụng cùng một lúc không,
* * * * * date >> date.txt
đang đưa ra cùng một đầu ra ngày trong date.txt.
Đây là kịch bản tôi đang cố thực hiện:
event.sh
:
#!/usr/bin/env bash
echo data > /root/data.txt
Sử dụng crontab -e
, dòng dưới đây hoạt động,
* * * * * /bin/bash /root/event.sh >/tmp/debug.log 2>&1
15 * * * * /bin/bash /root/event.sh >/tmp/debug.log 2>&1
Tuy nhiên, khi tôi thử một số đối số khác, hy vọng nó sẽ chạy vào lúc 2.50pm:
50 14 * * * /bin/bash /root/event.sh >/tmp/debug.log 2>&1
hoặc là
50 14 * * * (cd /root ; ./event.sh >/tmp/debug.log 2>&1)
nó sẽ không còn hoạt động Có vẻ như có một vấn đề với đối số giờ của tôi. Không có gì có thể được tìm thấy trong các /tmp/debug.log
tập tin.
GIẢI PHÁP:
Hóa ra tôi phải khởi động lại dịch vụ cron sau khi thay đổi TZ.
* * * * * /bin/bash /root/event.sh >/tmp/debuge.log 2>&1
* * * * * date
và xác nhận rằng date
hiển thị thời gian dự kiến. Lưu ý rằng việc đặt biến môi trường TZ từ bên trong crontab có thể không ảnh hưởng đến múi giờ như được sử dụng bởi chính cron daemon, nhưng nó sẽ ảnh hưởng đến các quy trình được khởi chạy qua cron, vì vậy nếu bạn đặt TZ trong crontab của mình, tôi sẽ đề nghị tạm thời nhận xét nó và đặt thời gian bằng cách sử dụng múi giờ của đồng hồ hệ thống (có thể là UTC nếu bạn đang khởi động Linux một lần, nhưng có thể là giờ địa phương).
~/event.sh
thử với/home/username/event.sh