จะวางระบบ cronjobs ได้ที่ไหน?


11

หากฉันต้องการcronjob ที่ทำงานในระดับระบบ (เช่นไม่เฉพาะสำหรับผู้ใช้บางคน) คุณจะแนะนำให้ฉันสร้างมันได้อย่างไร?

  1. ทำงานcrontab -eเป็นราก
  2. ผนวกเข้ากับ /etc/crontab
  3. การสร้างไฟล์ที่กำหนด cronjob ใน /etc/cron.d/
  4. การสร้างไฟล์ที่กำหนด cronjob ใน/etc/cron.*ly/(แต่ถ้าช่วงเวลาดังกล่าวตรงกับความต้องการของฉัน)

สิ่งที่ผมกังวลส่วนใหญ่คือซึ่งวิธีการเหล่านี้อาจจะถูกเขียนทับโดยการปรับปรุงระบบ ?

Additionaly ฉันเดาว่าถ้างานเป็นระยะเวลาที่ฉันควรใส่ไว้ในไฟล์สคริปต์ที่แยกต่างหาก/root/bin/เช่นใน คุณเห็นด้วยหรือไม่?


3
คุณควรระบุว่าคุณใช้ Unix หรือ Linux รุ่นใด
jlliagre

ฉันแค่การเรียนรู้ในขณะนี้ :) ฉันคิดว่ามันเป็นพฤติกรรม distro อิสระ ...
ฟ้า

คำตอบ:


13

ห้ามใช้ crontab -e

ฉันจะไม่ใส่มันในcrontab -eฐานะที่เป็นราก โดยทั่วไปจะไม่ค่อยชัดเจนสำหรับผู้ดูแลระบบรายอื่นและมีแนวโน้มที่จะหายไปตามกาลเวลา การใส่ไว้ใน/etc/crontabคุณสามารถระบุเวลาที่คุณต้องการให้ทำงานและคุณสามารถระบุผู้ใช้อื่นได้เช่นกัน

สถานที่อื่น ๆ

หากคุณไม่สนใจเกี่ยวกับการเรียกใช้สคริปต์ในฐานะผู้ใช้รายอื่นและ / หรือคุณต้องการให้สคริปต์รันทุกสัปดาห์รายวันและอื่น ๆ การแจกแจงหลายครั้งจะมีไดเรกทอรีที่สามารถวางสคริปต์ที่จะประมวลผลโดยอัตโนมัติในเวลาที่กำหนด

ตัวอย่างเช่นภายใต้ Redhat ตาม distros:

$ ls -dl /etc/cron*
drwxr-xr-x. 2 root root 4096 Nov 29 11:06 /etc/cron.d
drwxr-xr-x. 2 root root 4096 Nov 29 11:06 /etc/cron.daily
-rw-------. 1 root root    0 Nov 23 07:42 /etc/cron.deny
drwxr-xr-x. 2 root root 4096 Nov 29 11:03 /etc/cron.hourly
drwxr-xr-x. 2 root root 4096 Nov 29 11:06 /etc/cron.monthly
-rw-r--r--. 1 root root  457 Sep 26  2011 /etc/crontab
drwxr-xr-x. 2 root root 4096 Sep 26  2011 /etc/cron.weekly

ฉันมักจะใส่ crons ระดับระบบที่ฉันต้องการเรียกใช้ในเวลาที่กำหนด/etc/cron.dแทน/etc/crontabโดยเฉพาะอย่างยิ่งหากพวกเขามีสคริปต์ที่ซับซ้อนมากขึ้น

ฉันชอบใช้ไดเรกทอรีภายใต้/etc/cron*เพราะพวกเขากำลังเป็นสถานที่ที่ชัดเจนมากขึ้นว่าผู้บริหารของระบบอื่น ๆ จะได้รู้ว่าจะมองและไฟล์ที่นี่สามารถจัดการได้ผ่านการติดตั้งแพคเกจเช่นและrpm / หรือapt

การปกป้องรายการ

ไดเรกทอรีใด ๆ ที่ฉันกล่าวถึงถูกกำหนดให้วางสคริปต์ที่จะไม่ถูกทำลายโดยผู้จัดการแพ็คเกจ หากคุณกังวลเกี่ยวกับการป้องกันรายการ crontab ฉันจะไม่ใส่มันลงใน/etc/crontabไฟล์อย่างแน่นอนและแทนที่มันจะเป็นสคริปต์ที่เหมาะสมในหนึ่งใน/etc/cron*ไดเรกทอรี


1

ฉันจะเลือก # 4 ช่วยให้การตั้งค่าระบบเลือกได้ว่าจะให้ทำงานเมื่อใดและโดยปกติแล้วพวกเขาจะทำงานที่ดีของ "ทำงานเมื่อไม่ยุ่ง" การเปลี่ยน cron scheduler ของระบบจะมีผลกับเวลารันของสคริปต์โดยอัตโนมัติ

ข้อเสียคือคุณไม่สามารถควบคุมได้โดยตรงเมื่อทำงาน หากคุณต้องการการควบคุมโดยตรงให้ใช้ # 1

1 มีโอกาสน้อยที่จะถูกเขียนทับโดยการอัปเดตระบบ แม้ว่า 3 และ 4 น่าจะปลอดภัย ทุกอย่างขึ้นอยู่กับว่าคุณจะอัพเดตอย่างไร distro ของคุณสามารถอัปเดตได้ตามที่ต้องการ แต่โดยทั่วไปแล้วจะมีเพียง 2 คนเท่านั้นที่มีความเสี่ยงที่จะถูกเขียนทับ

ในที่สุดฉันจะใส่สคริปต์ใน / usr / local / bin นั่นคือ "ปกติ" ที่ฉันวางสิ่งต่าง ๆ ของระบบที่ไม่ได้รับการจัดการโดยผู้จัดการแพคเกจของ distro / root / bin เป็นที่ยอมรับเช่นกันหากเป็นเพียงการรันโดย root อย่างไรก็ตามนี่คือรสชาติส่วนใหญ่ทั้งหมด


0

ข้อใดข้อหนึ่งข้างต้นจะใช้งานได้และไม่ควรเขียนทับการอัปเดตใด ๆ ข้างต้น ตัวเลือกที่แท้จริงเกิดขึ้นกับความเห็น - คนสามคนที่แตกต่างกันมักจะมีอย่างน้อยสองถ้าไม่ใช่สามคำตอบที่ต่างกัน

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