Cron có thể ghi đầu ra công việc vào một bản ghi * theo mặc định * (thay vì thư) không?


23

Chúng ta đều biết cách đúng để xử lý đầu ra từ các công việc định kỳ là chuyển hướng nó đến một tệp:

0 * * * * /bin/date >> /var/log/date.log 2>&1

Tuy nhiên, đôi khi quản trị viên lười biếng, hay quên hoặc không biết gì và không đưa vào những chuyển hướng đó; trong trường hợp này, đầu ra của công việc được gửi đến $ MAILTO hoặc người dùng sở hữu hoặc root. Trên một số hộp tôi quản lý, thư bị vô hiệu hóa, vì vậy đầu ra này đi vào một lỗ đen. Điều tôi băn khoăn là, có cách nào để bảo cron nhận bất kỳ đầu ra công việc nào và thay vì gửi thư, hãy ném nó vào một tệp nhật ký bắt tất cả ở đâu đó không? Tôi đang sử dụng Ubuntu (8.04 nhưng đang chuyển sang 9.04). Có một gợi ý về một giải pháp như vậy trong kết quả ngẫu nhiên này của Google , nhưng tôi nghĩ OP có thể đã nhầm lẫn về đầu ra cron so với đầu ra của các công việc cron.

Tôi mở các giải pháp liên quan đến một chút kịch bản hoặc hack, nhưng lý tưởng nhất đây sẽ là một bit cấu hình tôi có thể đặt ở đâu đó. Tôi không thấy bất kỳ gợi ý trong man cron. Cảm ơn!

Câu trả lời:


1

Đối với croniecron (được Gentoo Handbook khuyên dùng), có đối số "-s" cho cuộc gọi cron, sẽ gửi đầu ra công việc tới nhật ký hệ thống bằng syslog.


3

Câu trả lời ngắn gọn là không, cron mail cho chủ sở hữu của crontab theo thiết kế. Trong cron tiêu chuẩn không có cách nào để thay đổi điều này.

Điều tốt nhất tôi có thể nghĩ đến là cấu hình MTA trên các máy mà bạn muốn hành vi này chuyển thư vào tệp nhật ký thay vì hộp thư người dùng.


3

Tôi không chắc ý của bạn chính xác là gì khi bạn nói "thư bị vô hiệu hóa". Nhưng có lẽ bạn có thể thiết lập một bí danh trong /etc/aliasesđó được hướng đến một đường ống? Cái gì đó như

root: "|/bin/cat >> /var/log/cron.log"

root: /var/log/cron.logkhông làm việc feep.net/sendmail/tutorial/intro/aliases.html
endolith

Không làm gì cho tôi cả.
endolith

Chúng chỉ có thể hoạt động nếu bạn đang chạy sendmail dưới dạng MTA của bạn. Điều này đang trở nên ít phổ biến hơn. (Có, tôi biết rằng tôi đang trả lời nhận xét 5 tuổi!)
Alex L

2

Tôi không nghĩ những gì bạn yêu cầu thực sự có thể với cron Ubuntu (hoặc bất kỳ thứ gì khác).

Ngoài ý tưởng về geekmonkeys, bạn cũng có thể đặt $ MAILTO vào tài khoản cục bộ và định tuyến đầu ra thông qua procmail.


1

Chưa bao giờ nghe về một thiết lập như vậy cho cron, vì vậy tôi sẽ đi theo con đường kịch bản.

Tạo một công việc cron để tuần tra / var / spool / cron / * và nối thêm chuyển hướng vào bất kỳ công việc nào không có.


1

Một tùy chọn khác là tạo một tập lệnh shell có tên là cron_wrapper hoặc một cái gì đó và để nó làm điều gì đó như thế này:

#! / thùng / sh

đánh giá "$ * >> /var/log/cronlog.log"
thoát $?

Sau đó, tất cả các crontabs của bạn chỉ cần một cái gì đó như thế này:

* * * * * / usr / local / bin / cron_wrapper echo xin chào

Lưu ý tôi đã không kiểm tra mã này, nó chỉ là một ý tưởng.


1
Điều đó không giải quyết được vấn đề. Nếu mọi người không thể nhớ đặt MAILTO hoặc chuyển hướng thiết bị xuất chuẩn sang tệp, họ sẽ không nhớ chạy nội dung thông qua trình bao bọc.
Kamil Kisiel

1

Tôi không biết "cron tiêu chuẩn" là gì. Có rất nhiều cron daemon, các distro khác nhau sử dụng những cái khác nhau. Vixie cron được triển khai rộng rãi nhất, vì vậy đó có lẽ là những gì bạn muốn nói. Nhưng trên một số distro, nó sẽ không được mặc định.

Tôi đã tiếp quản sự phát triển của Dillon's cron (dcron), vốn là mặc định trên Arch Linux. Các bản phân phối khác cũng sử dụng nó, nhưng tôi không biết nếu nó là mặc định ở bất kỳ nơi nào khác. dcron có một tùy chọn gọi -Mđể chỉ định rằng bạn muốn sử dụng tập lệnh tùy chỉnh thay vì sendmail. Kịch bản được gọi mà không có đối số, và với một vài tiêu đề email và &>đầu ra của bất kỳ cronjobs nào dưới dạng stdin. (Nếu không có &>đầu ra, tập lệnh sẽ không được gọi.)


1

tại sao chúng ta không đặt MAILTO = "" trong crontab của người dùng cụ thể. Điều này sẽ vô hiệu hóa ghi nhật ký thư trong / var / spool / mail /

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.