Cron công việc không chạy?


24

Tôi có một tập tin crontab trông như thế này:

* * * * * /home/abliskovs/update/update.sh

Tuy nhiên, khi tôi kiểm tra nhật ký hệ thống để tìm bằng chứng cho thấy công việc đã chạy, không có gì có thể chỉ ra rằng nó đã từng chạy. Làm thế nào tôi có thể kiểm tra nếu nó đang chạy?

crontab -l đầu ra như sau:

* * * * * /home/abliskovs/update/update.sh


OK, tôi đã làm điều đó.
Alex Bliskovsky

Có thể là một câu hỏi ngớ ngẩn, nhưng nó đã xảy ra với tôi trước đây vì vậy tôi sẽ hỏi dù sao đi nữa. Hãy chắc chắn rằng cron daemon đang thực sự chạy! : P Đoán thứ hai là quyền, đảm bảo rằng nó có thể được thực thi bởi người dùng đang chạy cronjob.
Mattias Ahnberg

Câu trả lời:


21

Thêm a >>

Thí dụ

0 * * * * /home/abliskovs/update/update.sh 2> & 1 /tmp/testlog.log

Cũng đảm bảo các nội dung sau:

  • Thêm cronjobs một cách đúng đắn. nếu bạn đã sử dụng crontab -e trong tài khoản của mình, các tập lệnh sẽ được chạy với người dùng của bạn (và do đó, mục crontab có một trường ít hơn - người dùng để chạy nó, như đã biết). Nếu bạn chỉ sao chép ở trên snipped của bạn vào /etc/cron.d, nó sẽ thất bại vì bạn không chỉ định người dùng (hoặc đúng hơn là nó không tìm thấy người dùng nào có tên "bash").
  • Hãy chắc chắn rằng tệp script có thể thực thi được, nếu không nó sẽ không thực thi nó.
  • Tải lại các công việc cron tải lại dịch vụ sudo hoặc khởi động lại dịch vụ cronsudo /etc/init.d/cron restart

Làm thế nào để làm cho một tập tin thực thi?

Một số cách để làm cho tập tin của bạn thực thi

chmod +x /home/abliskovs/update/update.sh 

chmod -R 0755 /home/abliskovs/update/update.sh

chmod a+x /home/abliskovs/update/update.sh

3

Đảm bảo rằng tệp tập lệnh có thể thực thi {chmod 755} nếu không nó sẽ không thực thi được


2
Để tạo một tập tin thực thi, bạn cũng có thể chạychmod +x filename
Stefano Palazzo

0

Kịch bản shell update.shcó thể chứa lỗi, ví dụ một số lệnh không thể được thực thi vì không thể tìm thấy lệnh. Trong trường hợp này, có thể giúp thêm đường dẫn đến lệnh của bạn trong biến PATH hoặc thêm trực tiếp vào phía trước lệnh của bạn. Nó cũng giúp chỉ định địa chỉ e-mail MAILTO, e-mail kết quả từ việc thực thi Cronjobs được gửi đến địa chỉ này

PATH=/path/to/your/command:/another/important/path
MAILTO=my_name@my_domain 

Bạn cũng có thể kiểm tra hộp thư cục bộ mailvà tệp syslog /var/log/syslogđể tìm lỗi. Xem thêm câu hỏi liên quan này tại sao cronjobs có thể không hoạt động .


0

Tôi đã trải qua vấn đề tương tự và nguyên nhân đối với tôi là crontab không chạy vì nó không được phép. Tôi đã thay đổi tệp và đặt nó vào /tmpt/output.log

*/5 * * * * /usr/bin/php /home/ubuntu/app/artisan cmd:process-order > /tmp/queue.output

Hãy cho tôi biết, nếu việc này giúp ích cho bạn.

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.