บน Ubuntu-Desktop และบนเดเบียนเซิร์ฟเวอร์ของฉันฉันมีสคริปต์ที่ต้องดำเนินการทุกนาที (สคริปต์ที่เรียกนาทีของการเรียกดูออนไลน์ในพื้นที่ของฉัน)
ปัญหาคือว่าใน debian derivates cron จะเข้าสู่ระบบ/var/log/syslog
ทุกครั้งที่ดำเนินการ ฉันเห็นข้อความที่ถูกประหารซ้ำแล้วซ้ำอีกใน/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)
ฉันรู้ว่าเพื่อที่จะระงับการส่งออกของโปรแกรมฉันสามารถเปลี่ยนเส้นทางไปยัง/dev/null
เช่นซ่อนข้อผิดพลาดและข้อความเตือนจากโปรแกรมฉันสามารถสร้างบรรทัดใน crontab เช่นนี้
* * * * * root /usr/local/sbin/mycommand.sh > /dev/null
แต่ฉันต้องการเรียกใช้ cronjob และตรวจสอบว่าเอาต์พุตหรือข้อผิดพลาดที่สร้างขึ้นทั้งหมดถูกไพพ์ไปที่ NULL ดังนั้นจึงไม่สร้างข้อความใด ๆ ใน syslog และไม่สร้างอีเมลใด ๆ
แก้ไข:
มีวิธีแก้ปัญหาในการเปลี่ยนเส้นทางบันทึก cron เป็นบันทึกแยกต่างหากเช่นเสนอที่นี่โดยการเปลี่ยน/etc/syslog.conf
แต่ข้อเสียเปรียบก็คือว่าผลลัพธ์ทั้งหมดของ cronjobs ทั้งหมดจะถูกเปลี่ยนเส้นทาง
ฉันสามารถเปลี่ยนเส้นทาง cronjob เดียวไปยังไฟล์บันทึกแยกต่างหากได้หรือไม่ กำหนดค่าได้ดีกว่าภายในcron.hourly
ตัวไฟล์เอง
MAILTO=""
เพราะบรรทัดแรกของ crontab จะป้องกันอีเมลใด ๆ นอกจากนี้ให้ใช้ trifecta แบบเต็มบนบรรทัดคำสั่งของคุณหากคุณไม่แสดงผลลัพธ์ทั้งหมด .. สตริงทั้ง 3 ชนิดนี้ถูกเปลี่ยนเส้นทางโดย: >/dev/null 2>&1
- แน่นอนคุณสามารถมี scrip รวมเป็นระยะ ๆ เขียนไปยังบันทึกแยกต่างหาก
MAILTO=""
ที่จุดเริ่มต้นของไฟล์ cron การดำเนินการนี้จะระงับอีเมลทั้งหมด และฉันไม่เคยได้ยิน cron daemon ที่ส่งงานออกไปยัง syslog (แต่ฉันคิดว่ามันเป็นไปได้)