Công việc định kỳ chạy 1 giờ, hoàn toàn không đồng ý với thời gian hệ thống


9

Ví dụ về vấn đề:

* 9 * * * echo 9
* 10 * * * echo 10

Ở trên sẽ tắt email cho người dùng mỗi phút, nhưng tất cả các phản hồi "9" sẽ xảy ra vào lúc 10:00 AM -> 10:59 AM, trong khi "10" sẽ đến vào lúc 11:00 AM -> 11:59 AM .

Điều hành một công việc của

* * * * * /bin/date ; /bin/date -u

Trả lại ngày và thời gian dự kiến ​​(chính xác). điều này đúng cho cả UTC và giờ địa phương (Mỹ / Denver). Thay đổi công việc này để chạy mỗi phút vào một giờ cụ thể dẫn đến kết quả bù (các công việc được yêu cầu chạy ở mức 9 chạy lúc 10, v.v.).

Gỡ lỗi hiện tại tôi đã hoàn thành:

Được rồi, đó là kỳ lạ. Có lẽ tập tin múi giờ của tôi bằng cách nào đó bị rối tung? Hãy kiểm tra xem

diff -s /etc/localtime /usr/share/zoneinfo/`cat /etc/timezone`
Files /etc/localtime and /usr/share/zoneinfo/America/Denver are identical

Tôi đã kiểm tra đồng hồ phần cứng để xem nếu nó tắt hoặc bằng cách nào đó không đồng ý với cài đặt cục bộ của tôi (chạy dưới quyền root).

date ; hwclock
Wed Oct 26 10:50:13 MDT 2016
Wed 26 Oct 2016 10:50:14 AM MDT  -0.204171 seconds

Có vẻ bị tắt một giây, nhưng điều đó không làm cho công việc định kỳ của tôi chạy hết giờ, phải không?

Tôi cũng chắc chắn về những điều sau đây:

  • Múi giờ của tôi đã thay đổi gần đây? Không
  • Bạn đã thử tự sửa lỗi múi giờ chưa? Đúng
  • Bạn đã thiết lập lại cron sau khi sửa múi giờ? Đúng
  • Tôi có chắc chắn rằng dịch vụ cron đã được khởi động lại không? Đúng
  • Tôi đã khởi động lại dịch vụ cron chưa? Đúng
  • Bạn có thực sự chắc chắn rằng cron đã được khởi động lại? Chắc chắn 100% Cron đã được khởi động lại

Thông tin có khả năng khác có liên quan:

Chạy Debian.

cat /etc/debian_version
8.6

Hạt nhân hiện tại

uname -a
Linux BigBox 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt25-2 (2016-04-08) x86_64 GNU/Linux

Cập nhật gỡ lỗi:

Ran 'hwclock --systohc', những thay đổi đáng chú ý đối với hành vi. Chạy lệnh này để kiểm tra

date;hwclock
Wed Oct 26 12:39:09 MDT 2016
Wed 26 Oct 2016 12:39:11 PM MDT  -0.875328 seconds

Tôi không thể chạy 'cat / etc / sysconfig / clock' vì tệp này không tồn tại. Chạy lệnh find trong / etc / cây để tìm 'clock' xác nhận rằng tôi không có tệp nào có tên đó.

Đã kiểm tra xem có bất cứ điều gì tôi biết đã đặt biến CRON_TZ không. Nó không được đặt ở cấp độ người dùng, cũng không phải ở cấp độ gốc. Có cron echo chúng ra không cho đầu ra.


1
CRON_TZvar env được đặt ở bất cứ đâu?
thrig

cố gắng hwclock --systohcchỉ cho đầy đủ, và thêm cat /etc/sysconfig/clockvào câu hỏi?
steve

Đã thêm cả hai đề xuất vào thông tin của tôi, đáng buồn là không cung cấp nhiều giá trị. CRON_TZ không được đặt trong bất kỳ môi trường nào tôi có thể thấy, đồng bộ hóa lại giờ đã cho kết quả như trước (dù sao cũng đã kiểm tra xem nó có thay đổi không, và tôi không có '/ etc / sysconfig / clock ' tập tin.
jm Hurufo

Câu trả lời:


1

Thêm một nơi để tìm: tập lệnh start-at-boot cho cron, hoặc tập tin crontab của hệ thống trường học cũ /etc/crontab. Có thể là biến môi trường TZ được đặt, giả sử, /etc/init.d/croniehoặc /lib/systemd/system/crond.service, tôi không chắc chắn Debian sử dụng cái gì cho hệ thống init.

Tôi đã thấy một cái gì đó như thế này khi tôi cố gắng crondchạy mọi thứ mỗi giờ:

0 */2 * * * /opt/dbms/rainstor/archiving/ama_term

crondchạy tập lệnh vào số giờ lẻ. Tôi nghi ngờ, nhưng không bao giờ chứng minh với bản thân mình, rằng nó phải làm với một sự nhầm lẫn thời gian tiết kiệm ánh sáng ban ngày.


/etc/init.d/cron đang lấy /etc/timezonetệp. TZ = cat /etc/timezone. Tập tin đó có vẻ đúng (Ran một tổng kiểm tra chỉ để chắc chắn gấp đôi nó giống với những gì nó cần phải có.). /lib/systemd/system/crond.service dường như không muốn sửa đổi bất kỳ biến TZ nào. Tôi sẽ kiểm tra đề xuất * / 2 để xem liệu tôi có thấy điều tương tự không.
jm Hurufo
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.