Trên máy tính để bàn Ubuntu và trên máy chủ debian của tôi, tôi có một tập lệnh cần được thực thi mỗi phút (một tập lệnh gọi phút của bộ lông mày trực tuyến không gian của tôi ).
Vấn đề là trên debian phái sinh cron đang đăng nhập vào /var/log/syslog
mỗi lần nó thực thi. Tôi cuối cùng đã thấy lặp đi lặp lại thông điệp mà nó đã được thực hiện lặp đi lặp lại trong /var/log/syslog
:
Nov 11 16:50:01 eclabs /USR/SBIN/CRON[31636]: (root) CMD (/usr/bin/w3m -no-cookie http://www.spacetrace.org/secret_script.php > /dev/null 2>&1)
Tôi biết rằng để chặn đầu ra của chương trình, tôi có thể chuyển hướng nó tới /dev/null
, ví dụ để ẩn tất cả các thông báo lỗi và cảnh báo khỏi chương trình, tôi có thể tạo một dòng trong crontab như thế này
* * * * * root /usr/local/sbin/mycommand.sh > /dev/null
Nhưng tôi muốn chạy một cronjob và chắc chắn rằng tất cả các đầu ra hoặc lỗi được tạo đều được chuyển sang NULL, vì vậy nó không tạo ra bất kỳ thư nào trong syslog và không tạo ra bất kỳ email nào
EDIT:
có một giải pháp để chuyển hướng các bản ghi cron thành một bản ghi riêng như đề xuất ở đây bằng cách thay đổi/etc/syslog.conf
Nhưng nhược điểm là, sau đó TẤT CẢ đầu ra của tất cả các cronjobs đều được chuyển hướng.
Tôi bằng cách nào đó chỉ có thể chuyển hướng một cronjob duy nhất đến một tệp nhật ký riêng biệt? Tốt nhất là cấu hình bên trong cron.hourly
tập tin chính nó.
MAILTO=""
vì dòng đầu tiên của crontab sẽ ngăn chặn mọi email. Ngoài ra, sử dụng trifecta đầy đủ trên các dòng lệnh của bạn nếu bạn đang chặn tất cả đầu ra .. Tất cả 3 loại đều được chuyển hướng bởi chuỗi này: >/dev/null 2>&1
- Tất nhiên, bạn có thể có đoạn mã bao gồm ghi định kỳ vào một nhật ký riêng.
MAILTO=""
ở đầu tập tin cron. Điều này sẽ ngăn chặn tất cả các email. Và tôi chưa bao giờ nghe nói về một cron daemon gửi đầu ra công việc tới syslog (nhưng tôi đoán nó có thể).