Làm thế nào để tôi tìm ra lý do tại sao cron không chạy công việc của tôi?


15

Tôi đang sử dụng Ubuntu 14.04 và trình nền cron đang chạy:

# ps ax | grep cron
822 ?        Ss     0:00 cron

nhưng nó không thực hiện bất kỳ công việc. Trước đây tôi đã nhận được các mục /var/log/syslognhư thế này:

2014-05-04T11:47:01.839754+01:00 localhost CRON[29253]: (root) CMD (test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly ))

nhưng bây giờ không có mục liên quan đến cron. Tôi cũng đã nhận được các mục như thế này trong /var/log/auth.log:

2014-05-04T11:47:01.839183+01:00 localhost CRON[29252]: pam_unix(cron:session): session opened for user root by (uid=0)
2014-05-04T11:47:13.495691+01:00 localhost CRON[29252]: pam_unix(cron:session): session closed for user root

nhưng một lần nữa, bây giờ không có mục liên quan đến cron.

Tôi không biết rằng bất cứ điều gì đã thay đổi. Tôi đã thử khởi động lại cron:

# service cron restart
cron stop/waiting
cron start/running, process 24907

Tôi đã thử sử dụng crontab -eđể thêm một công việc cron * * * * * date >> /tmp/somefilehoạt động, nhưng nó đã cài đặt một crontab mới /var/spool/cron/crontabs/root, trong khi tôi muốn cron sử dụng tệp trong /etc/crontab.

Có bất kỳ tùy chọn gỡ lỗi nào tôi có thể sử dụng hoặc nhật ký ở đâu đó có thể đưa ra thông báo lỗi mà tôi có thể điều tra không?


1
Điều gì hiển thị cho crontab -l?
dùng345352353

no crontab for root.
jl6

Tôi tin rằng nếu bạn thực hiện một chút tìm kiếm trên trang SE này, bạn sẽ có câu trả lời. Đây là một vấn đề khá phổ biến.
mdpc

Các crons được truy xuất bằng crontablệnh ( -lswitch) phụ thuộc vào người dùng, trong khi /etc/crontabđược sử dụng để lưu trữ các crons trên toàn hệ thống. Vì lý do này, các tác vụ được lưu trong /etc/crontabsẽ không xuất hiện trong bất kỳ ai crontab -l.
John WH Smith

Câu trả lời:


4

Để tiếp tục giúp bạn gỡ lỗi những gì không ổn với croncông việc của bạn , bạn nên kiểm tra thư của mình. Điều này thường được lưu trữ trong một tập tin như /var/mail/<user_name>hoặc /var/spool/mail/<user_name>.

Hai tệp này thực sự là các liên kết cứng trên hộp Debian của tôi, nhưng tôi không biết đây có phải là tiêu chuẩn không.

Giải trình

Từ cron(8)trang:

Khi thực hiện các lệnh, bất kỳ đầu ra nào cũng được gửi đến chủ sở hữu của crontab (hoặc cho người dùng có tên trong biến môi trường MAILTO trong crontab, nếu điều đó tồn tại).


Tôi đã kiểm tra thư; không có gì được tạo ra, cũng không có tệp dead.letter.
jl6

0

Bạn đã chỉ ra rằng không có crontab cho root, có người dùng nào có mục crontab không? Nếu bạn chỉ sử dụng root thì bạn cũng có thể kiểm tra các thư mục sau: /etc/cron.daily/ - /etc/cron.hourly/ - /etc/cron.monthly/ - /etc/cron.weekly

trên máy của tôi (centos 6.4) tôi có mlocate.cron bên trong thư mục /etc/cron.daily/ và cron chạy tập lệnh đó hàng ngày.

Vì vậy, tôi nghĩ rằng bạn chỉ cần thêm công việc cron.


Nhưng có một tập tin crontab trong /etc/crontab. Có lẽ câu hỏi là tại sao crontab -lkhông thừa nhận nó?
jl6

0

Tôi đã giải quyết điều này bằng cách thay đổi các quyền trên /etc/crontab:

-rw-r--r-- 1 root root 778 May 10 21:31 /etc/crontab

Trước đây nó là -rw-rw-r--. Đó là sự thay đổi duy nhất. Nó đã không hoạt động, bây giờ nó là. Vẫn không chắc tại sao.


1
Root crontab sẽ thực thi bất kỳ lệnh nào dưới dạng root. Quyền cho phép ghi quyền truy cập vào root không được coi là lỗ hổng bảo mật.
ChuckCottrill

@ChuckCottrill: Nhưng bit ghi nhóm sẽ chỉ cấp quyền truy cập ghi cho những người trong nhóm gốc - có lẽ chỉ là người dùng root?
jl6

0

Tôi cũng có một loại vấn đề tương tự, nhưng sau khi chỉ định root là người dùng trên /etc/crontab, công việc cron bắt đầu kích hoạt.

Nó có thể là do cú pháp theo sau crontab -emà khác với /etc/crontab.

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.