crontab -e ทำไมแตกต่างจาก / etc / crontab น้อยลง?


11

ฉันค่อนข้างใหม่สำหรับยูนิกซ์และ crons ตอนนี้ฉันกำลังพยายามเพิ่ม crons ลงในไฟล์ cron ที่มีอยู่ crontab -eผมอ่านที่คุณสามารถทำเช่นนี้กับ สิ่งที่น่าสับสนสำหรับฉันก็คือมันcrontab -eแสดงให้เห็นถึง crons / คำสั่งต่าง ๆ ที่แตกต่างจากless /etc/crontab- ทำไมล่ะ? วิธีใด / วิธีที่ถูกต้องในการแก้ไข?

คำตอบ:


14

แม้ว่าคำตอบของ @X Tian จะมีข้อมูลเกี่ยวกับไฟล์ต่าง ๆ สำหรับ crontab แต่ข้อมูลสำคัญที่เกี่ยวข้องกับคำถามของคุณคือ:

crontab -eแก้ไขไฟล์ของผู้ใช้ crontab (เก็บไว้ใน/var/spool/cron/crontabs/ไดเรกทอรีบนระบบ Debian ปัจจุบัน แต่ YMMV) /etc/crontabหรือสร้างใหม่และไม่ คล้ายกับcrontab -l(รายการไฟล์ crontab) และcrontab -r(ลบไฟล์ crontab)

สำหรับทุกงาน cron crontab -eที่ควรจะดำเนินการภายใต้บัญชีของผู้ใช้ที่คุณควรใช้ สำหรับงานระบบคุณควรเพิ่มไฟล์ภายใต้/etc/cron.dหากมีอยู่; ภายใต้/etc/cron.{hourly|daily|weekly|monthly}(แต่จะต้องไม่ตั้งชื่อเหมือนชื่อแพ็คเกจ!) หากเหมาะสมกับวัตถุประสงค์ของคุณ /etc/crontabหรือเพิ่มเส้นเพื่อ แต่ระวังว่า/etc/crontabอาจถูกเขียนทับด้วยการอัพเดทระบบ


@Stephane Chazelas ขอบคุณสำหรับการชี้แจงด้วยการแก้ไขของคุณ /var/spool/cron/ไดเรกทอรีเป็นพิเศษลินุกซ์ (ดูไฟล์ลำดับชั้นมาตรฐาน ) และสถานที่อาจแตกต่างกันในระบบอื่น ๆ กว่า Debian ปัจจุบัน
Dubu

3

คุณต้องการอ่านหน้าคู่มือman cronและman crontab

นี่คือสารสกัดที่ครอบคลุมคำถามของคุณ จากman cron

หมายเหตุ cron ค้นหาพื้นที่สปูล (/ var / spool / cron / crontabs) สำหรับไฟล์ crontab (ซึ่งตั้งชื่อตามบัญชีใน / etc / passwd); crontabs ที่พบถูกโหลดเข้าสู่หน่วยความจำ โปรดทราบว่า crontabs ในไดเรกทอรีนี้ไม่ควรเข้าถึงโดยตรง - ควรใช้คำสั่ง crontab เพื่อเข้าถึงและอัปเดต

   cron also reads /etc/crontab, which is in a slightly  different  format
   (see  crontab(5)).   Additionally, cron reads the files in /etc/cron.d:
   it treats  the  files  in  /etc/cron.d  as  in  the  same  way  as  the
   /etc/crontab  file  (they  follow the special format of that file, i.e.
   they  include  the  user  field).  However,  they  are  independent  of
   /etc/crontab:  they  do  not, for example, inherit environment variable
   settings from it. The intended purpose of  this  feature  is  to  allow
   packages  that  require  finer  control  of  their  scheduling than the
   /etc/cron.{daily,weekly,monthly} directories to add a crontab  file  to
   /etc/cron.d. Such files should be named after the package that supplies
   them. Files must conform to the same naming convention as used by  run-
   parts(8):  they  must  consist solely of upper- and lower-case letters,
   digits, underscores, and hyphens. If the -l option is  specified,  then
   they must conform to the LSB namespace specification, exactly as in the
   --lsbsysinit option in run-parts.

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