ทำไม cron ต้องการ MTA สำหรับการบันทึก มีข้อได้เปรียบอะไรเป็นพิเศษหรือไม่? ทำไมมันไม่สามารถสร้างไฟล์บันทึกเช่นยูทิลิตี้อื่น ๆ ได้?
ทำไม cron ต้องการ MTA สำหรับการบันทึก มีข้อได้เปรียบอะไรเป็นพิเศษหรือไม่? ทำไมมันไม่สามารถสร้างไฟล์บันทึกเช่นยูทิลิตี้อื่น ๆ ได้?
คำตอบ:
พิจารณาว่าวิธีการบันทึกข้อมูลแบบ "มาตรฐาน" แบบดั้งเดิมคือsyslogโดยที่ข้อมูลเมตาที่รวมอยู่ในข้อความคือ "รหัสอำนวยความสะดวก" และระดับความสำคัญ รหัสอำนวยความสะดวกสามารถใช้เพื่อแยกสตรีมบันทึกจากบริการต่าง ๆ เพื่อให้สามารถแบ่งออกเป็นไฟล์บันทึกต่าง ๆ เป็นต้น (แม้ว่ารหัสอำนวยความสะดวกจะค่อนข้าง จำกัด เมื่อมีความหมายดั้งเดิมคงที่)
สิ่งที่ syslog ไม่มีคือวิธีแยกข้อความสำหรับหรือจากผู้ใช้ที่ต่างกันและเป็นสิ่งที่cron
ต้องการในระบบที่มีผู้ใช้หลายคนแบบดั้งเดิม มันไม่มีประโยชน์ในการรวบรวมข้อความจากงาน cron ของผู้ใช้ทั้งหมดไปยังไฟล์บันทึกทั่วไปที่มีเพียงผู้ดูแลระบบเท่านั้นที่สามารถดูได้ ในทางกลับกันอีเมลจะให้การส่งข้อความไปยังผู้ใช้ที่แตกต่างกันตามธรรมชาติดังนั้นจึงเป็นตัวเลือกเชิงตรรกะที่นี่ ทางเลือกอื่นสำหรับ cron ในการทำงานด้วยตนเองและเพื่อสร้าง logfiles ไปยังโฮมไดเร็กตอรี่ของผู้ใช้แต่ละคน แต่ระบบ Unix ที่มีผู้ใช้หลายคนแบบดั้งเดิมจะถือว่ามี MTA ที่ทำงานอยู่ดังนั้นการนำ cron ไปใช้ใน cron การออกกำลังกายไร้ประโยชน์
ในระบบที่ทันสมัยอาจมีทางเลือกอื่นแน่นอน
ฉันคิดว่าโดย "การบันทึก" คุณหมายถึงการจัดเก็บผลลัพธ์ที่แท้จริงของงาน การทำงานของงานได้ถูกบันทึกไว้ในการเข้าสู่ระบบ cron แล้ว/var/cron/log
(เส้นทางอาจแตกต่างกันระหว่างระบบ) ไม่จำเป็นต้องใช้ MTA สำหรับบันทึกนี้
งาน cron ถูกรันในฐานะผู้ใช้ซึ่งงาน crontab เป็นส่วนหนึ่งของ
ในกรณีทั่วไปไม่มีการรับประกันว่าผู้ใช้รายนี้สามารถสร้างไฟล์ในระบบ (ผู้ใช้อาจไม่ใช่ผู้ใช้แบบโต้ตอบ) โดยเฉพาะอย่างยิ่งไม่อยู่ภายใต้/var
ลำดับชั้นที่มักจะสร้างบันทึก วิธีที่ปลอดภัยที่สุดในการแจ้งให้ผู้ใช้ทราบถึงข้อผิดพลาดและผลลัพธ์อื่น ๆ จากงานจึงรวบรวมและส่งทางอีเมลไปยังผู้ใช้ สิ่งนี้จะช่วยให้ผู้ใช้สามารถตั้งค่าการเปลี่ยนเส้นทางอีเมลเพื่อให้บัญชีสามารถดูได้เช่นข้อผิดพลาดในตำแหน่งที่ต้องการ
หากผู้ใช้ต้องการบันทึกเอาต์พุตของงานไปยังไฟล์พวกเขาอาจทำได้โดยการเปลี่ยนเส้นทางแบบง่าย ๆ ใน crontab:
0 */2 * * * "$HOME/scripts/myscript" >"$HOME/logs/myscript.log" 2>&1
นี้จะทำงาน"$HOME/scripts/myscript"
ทุกชั่วโมงสองชั่วโมงและจะบันทึกทั้งหมด"$HOME/logs/myscript.log"
ออกไป ไม่มีอีเมลใดที่ถูกสร้างขึ้นโดยการเรียกใช้งานนี้เนื่องจากเอาต์พุตทั้งหมดถูกเปลี่ยนเส้นทาง หากไม่มี2>&1
ข้อความแสดงข้อผิดพลาดจะยังคงถูกส่งทางอีเมล
สิ่งนี้อนุญาตให้ผู้ใช้เลือกตำแหน่งที่จะส่งออก