ทำไม cron ต้องการ MTA สำหรับการบันทึก


11

ทำไม cron ต้องการ MTA สำหรับการบันทึก มีข้อได้เปรียบอะไรเป็นพิเศษหรือไม่? ทำไมมันไม่สามารถสร้างไฟล์บันทึกเช่นยูทิลิตี้อื่น ๆ ได้?


นิดหน่อย แต่ฉันค่อนข้างแน่ใจว่า cron ไม่ต้องการ MTA; นอกเสียจากคุณจะจัดส่งอีเมล cron ไปยังโฮสต์อื่นสิ่งที่จะต้องมีก็คือ MDA ( ตัวแทนจัดส่งจดหมาย)
CVn

คำตอบ:


19

พิจารณาว่าวิธีการบันทึกข้อมูลแบบ "มาตรฐาน" แบบดั้งเดิมคือsyslogโดยที่ข้อมูลเมตาที่รวมอยู่ในข้อความคือ "รหัสอำนวยความสะดวก" และระดับความสำคัญ รหัสอำนวยความสะดวกสามารถใช้เพื่อแยกสตรีมบันทึกจากบริการต่าง ๆ เพื่อให้สามารถแบ่งออกเป็นไฟล์บันทึกต่าง ๆ เป็นต้น (แม้ว่ารหัสอำนวยความสะดวกจะค่อนข้าง จำกัด เมื่อมีความหมายดั้งเดิมคงที่)

สิ่งที่ syslog ไม่มีคือวิธีแยกข้อความสำหรับหรือจากผู้ใช้ที่ต่างกันและเป็นสิ่งที่cronต้องการในระบบที่มีผู้ใช้หลายคนแบบดั้งเดิม มันไม่มีประโยชน์ในการรวบรวมข้อความจากงาน cron ของผู้ใช้ทั้งหมดไปยังไฟล์บันทึกทั่วไปที่มีเพียงผู้ดูแลระบบเท่านั้นที่สามารถดูได้ ในทางกลับกันอีเมลจะให้การส่งข้อความไปยังผู้ใช้ที่แตกต่างกันตามธรรมชาติดังนั้นจึงเป็นตัวเลือกเชิงตรรกะที่นี่ ทางเลือกอื่นสำหรับ cron ในการทำงานด้วยตนเองและเพื่อสร้าง logfiles ไปยังโฮมไดเร็กตอรี่ของผู้ใช้แต่ละคน แต่ระบบ Unix ที่มีผู้ใช้หลายคนแบบดั้งเดิมจะถือว่ามี MTA ที่ทำงานอยู่ดังนั้นการนำ cron ไปใช้ใน cron การออกกำลังกายไร้ประโยชน์

ในระบบที่ทันสมัยอาจมีทางเลือกอื่นแน่นอน


13

ฉันคิดว่าโดย "การบันทึก" คุณหมายถึงการจัดเก็บผลลัพธ์ที่แท้จริงของงาน การทำงานของงานได้ถูกบันทึกไว้ในการเข้าสู่ระบบ 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ข้อความแสดงข้อผิดพลาดจะยังคงถูกส่งทางอีเมล

สิ่งนี้อนุญาตให้ผู้ใช้เลือกตำแหน่งที่จะส่งออก

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.