ทำไม crontabs ถึงไม่ถูกจัดเก็บในโฮมไดเร็กตอรี่ของผู้ใช้?


35

ฉันอยากรู้ว่าเหตุใด crontabs จึงถูกจัดเก็บใน / var แทนที่จะอยู่ในโฮมไดเรกทอรีของผู้ใช้ มันทำให้ความเจ็บปวดโดยรวมในการแยกไฟล์เหล่านี้สำหรับการอัพเกรด แต่ฉันสงสัยว่ามีเหตุผลเชิงตรรกะ ...

คำตอบ:


41

ไม่กี่เหตุผลที่ฉันคิดได้:

  • ในสภาพแวดล้อมขององค์กรคุณสามารถมีผู้ใช้หลายพันคน ถ้าเป็นเช่นนั้น cron จะต้องสแกนไดเรกทอรีของผู้ใช้ทุกคนทุก ๆ นาทีเพื่อตรวจสอบไฟล์ crontab (ไม่ว่าจะถูกสร้างลบหรือแก้ไข)
    โดยทำให้พวกเขาอยู่ในที่เดียวไม่ต้องทำการสแกนอย่างเข้มข้น
  • ไดเรกทอรีบ้านอาจไม่พร้อมใช้งานเสมอ หากโฮมไดเร็กทอรีคือเมาต์ autofs ไดเร็กทอรีเหล่านั้นอาจไม่ถูกเมาท์ การมี cron ตรวจสอบพวกเขาทุก ๆ นาทีจะทำให้พวกเขาถูกเมานท์และป้องกันพวกเขาจากการถอนติดตั้งเนื่องจากไม่มีการใช้งาน นอกจากนี้หากโฮมไดเร็กตอรี่ถูกเข้ารหัสและถอดรหัสด้วยรหัสผ่านของผู้ใช้ cron จะไม่สามารถไปที่โฮมไดเร็กตอรี่ได้ยกเว้นว่าผู้ใช้เข้าสู่ระบบและถอดรหัส / ติดตั้งแล้ว
  • โฮมไดเรกทอรีอาจถูกแชร์ข้ามโฮสต์ หากโฮมไดเรกทอรีเป็นการแชร์เครือข่ายโฮมไดเรกทอรีเดียวกันนั้นจะปรากฏขึ้นบนโฮสต์หลาย ๆ แห่ง แต่คุณอาจไม่ต้องการให้งาน cron ของคุณทำงานในทุก ๆ โฮสต์เพียงงานเดียว

1
+1 แม้ว่าโดยทั่วไปcronแล้วจะไม่สแกนไฟล์เหล่านั้นใหม่ทุกนาที มันโหลดพวกมันหนึ่งครั้งและอ่านใหม่อีกครั้งบนสัญญาณเท่านั้น
goldilocks

7
แต่คุณพูดถูกจุด # 3; ตามวิกิพีเดีย crontabs เป็นครั้งแรกใน $ HOME จนกระทั่ง "[เบลล์ devs ห้องปฏิบัติการ] รวม Unix คำสั่งลงใน cron ย้าย crontab ไฟล์จากผู้ใช้ไดเรกทอรีบ้าน (ซึ่งไม่เฉพาะสำหรับโฮสต์) และเข้าไปร่วมกันเป็นเจ้าภาพที่เฉพาะเจาะจง ไดเรกทอรีสปูล ... "นั่นคือเมื่อcrontabคำสั่งถูกสร้างขึ้นซึ่งอาจมีการจัดการกับปัญหาการโหลดใหม่
goldilocks

2
@Patrick หรือเมื่อโปรแกรมใช้การutimesเรียกของระบบโดยใช้เส้นทางไดเรกทอรีสปูลเป็นอาร์กิวเมนต์ในการตั้งค่า mtime ของไดเรกทอรีซึ่งเป็นสิ่งที่crontabคำสั่งของ Vixie cron ทำ
Mark Plotnick

2
cron รุ่นแรก ๆ ไม่ได้รับการเปลี่ยนแปลงกับไฟล์ crontab ของผู้ใช้อย่างแน่นอนเว้นแต่พวกเขาจะถูกแก้ไขผ่าน crontab -e ในอดีตฉันเคยถูก Solaris พบเห็นหน้าmanpages.info/sunos/cron.1.html

2
บน Solaris 10 crontab -eซึ่งเป็นรูท setuid เขียนข้อความ/etc/cron.d/FIFOหลังจากผู้ใช้แก้ไข crontab
Mark Plotnick
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.