Công việc định kỳ không khởi động sau khi thay đổi múi giờ


13

Tôi đã cố gắng loại bỏ nhiều lỗi phổ biến,

  1. đảm bảo rằng các PATH có sẵn cho cron

  2. có một dòng cuối ở cuối tập tin crontab

  3. múi giờ được thiết lập bởi:

    cd /etc
    cp /usr/share/zoneinfo/Asia/Singapore /etc/localtime
    

Chạy datetrong 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.logtậ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.


1
bất kỳ lỗi trong nhật ký? bạn có thể vui lòng thử với đường dẫn tuyệt đối thay vì ~/event.shthử với/home/username/event.sh
Rahul Patil

1
cũng thực hiện sửa đổi nhỏ như* * * * * /bin/bash /root/event.sh >/tmp/debuge.log 2>&1
Rahul Patil

1
Bạn nói rằng múi giờ được đặt chính xác, nhưng bạn có chắc chắn về điều đó không? Hãy thử thêm một mục thích * * * * * datevà xác nhận rằng datehiể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).
một CVn

1
Bạn đang thiếu điểm, @adsisco. Tôi yêu cầu bạn xóa bất kỳ chỉ thị TZ nào có thể có trong crontab và sau đó thử lại. Điều đó sẽ khiến ngày thực hiện với TZ giống như chính cron daemon, cho chúng ta thấy cron múi giờ muốn các trường thời gian trong. / Etc / giờ cục bộ chỉ ảnh hưởng đến hiển thị, không phải đồng hồ hệ thống và tôi nghi ngờ nó ảnh hưởng đến cron. Bằng cách thực hiện bài kiểm tra này, chúng tôi có thể chắc chắn rằng vấn đề của bạn không liên quan đến múi giờ (mà thật ra nó có vẻ như đối với tôi).
một CVn

1
thực sự, tôi nghĩ rằng tôi chỉ sửa nó bằng cách khởi động lại hệ thống ... có thể là tôi phải khởi động lại dịch vụ cron sau khi thay đổi TZ không? @ MichaelKjorling. CẢM ƠN! đã chỉ cho tôi các vấn đề múi giờ có thể.
adsisco

Câu trả lời:


7

Trước hết, tỷ lệ cược bạn gặp phải một lỗi khiến một trường bị xem xét không chính xác có vẻ đặc biệt thấp. Nó có nhiều khả năng là một sự hiểu lầm về những gì đang xảy ra và những gì cron mong đợi.

Trong trường hợp này, chúng tôi đã tìm ra trong các ý kiến ​​cho câu hỏi rằng đó rất có thể là vấn đề liên quan đến múi giờ. Đối với điều này, bạn sẽ:

  • Thêm một mục như * * * * * datevào crontab
  • Xóa (hoặc nhận xét) bất kỳ nhiệm vụ TZ nào khỏi crontab

Lực lượng này datephải chạy với cài đặt múi giờ của kẻ xâm lược, có nghĩa là cron daemon . Nhìn vào đầu ra; nó sẽ hiển thị cron múi giờ nào đang sử dụng bên trong, và do đó rất có khả năng nó muốn các múi giờ của nó vào. Nếu bạn có một phép gán TZ trong crontab, có thể dễ dàng chuyển giao biến môi trường TZ cho các lệnh được gọi nhưng cron tự sử dụng một số múi giờ khác . Bằng cách nhận xét hoặc xóa bài tập TZ, bạn sẽ tránh được sự mơ hồ này.

Cũng lưu ý rằng bất kỳ thay đổi nào đối với cài đặt múi giờ toàn cầu của hệ thống (bao gồm ví dụ / etc / localtime) gần như chắc chắn yêu cầu khởi động lại cron daemon và có thể (mặc dù không chắc) khởi động lại hệ thống để có hiệu lực đầy đủ. Chỉnh sửa gán TZ trong crontab không cần phải tải lại cron daemon, vì nó sẽ phát hiện ra rằng tệp đã được thay đổi và tải lại tự động.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.