ตำแหน่งของไฟล์ crontab


52

เป็นคนอื่น ๆ (มากที่สุด) ฉันแก้ไข crontab ของฉันผ่านcrontab -eที่ฉันเก็บการดำเนินการตามปกติทั้งหมดเช่นการสำรองข้อมูลส่วนเพิ่ม ntpdate การดำเนินการ rsync ต่างๆ จากสิ่งที่ฉันเข้าใจในการติดตั้งใหม่หรือผู้ใช้ใหม่สิ่งนี้จะสร้างไฟล์โดยอัตโนมัติหากไม่มีอยู่ อย่างไรก็ตามฉันต้องการคัดลอกไฟล์นี้ไปยังผู้ใช้รายอื่นดังนั้นไฟล์จริงที่ฉันแก้ไขอยู่ที่ไหน

หากสิ่งนี้แตกต่างกันระหว่าง distros ฉันใช้ Centos5 และ Mint 17


15
+1 เพียงเพื่อทำให้พื้นหลังเดสก์ท็อปของคุณมีธีมคริสต์มาสปีละครั้ง
Celada

5
@ Celada มันอาจจะไม่บ่อยนัก แต่มันก็เป็นงานประจำ
Jarmund

คำตอบ:


53

สถานที่ตั้งของไฟล์สำหรับผู้ใช้แต่ละคนcron จาก:/var/spool/cron/crontabs/
man crontab

ผู้ใช้แต่ละคนสามารถมี crontab ของตัวเองและแม้ว่าจะเป็นไฟล์ใน/var/spool/cron/crontabsพวกเขาไม่ได้ตั้งใจที่จะแก้ไขโดยตรง


7
คำสำคัญที่มี "พวกเขาไม่ได้ตั้งใจที่จะแก้ไขโดยตรง" ดังนั้นคำตอบนี้ไม่สมบูรณ์โดยไม่ต้องคำสั่งของ Celada ด้านล่างซึ่งให้คำตอบที่ปลอดภัยกว่าส่วน "คัดลอกไปยังผู้ใช้คนอื่น" ของคำถาม หากผู้คนมีนิสัยในการแก้ไข crontabs โดยตรงโดยไม่ต้องส่งคำสั่ง crontab พวกเขาจะใช้สติปัญญาในการตรวจสอบคำสั่งต่างๆ
Monty Harder

@ MontyHarder ฉันเห็นด้วย "พวกเขาไม่ได้ตั้งใจที่จะแก้ไขโดยตรง" แต่ถ้ามีความต้องการมันก็เหมือนว่ามีความจำเป็นที่จะต้องทำรายการใน crontab ผ่านสคริปต์ทุบตี คุณต้องใช้ไฟล์ที่ถูกต้องฉันไม่คิดว่าอินเทอร์เฟซภายนอกจะช่วยได้ในกรณีนั้นแก้ไขให้ฉันถ้าฉันผิด
Prabhat Kumar Singh

@PrabhatKumarSingh คุณยังไม่ควรแก้ไขไฟล์โดยตรง หากคุณอ่านคำสั่งของ Celada ด้านล่างคุณจะเห็นตัวอย่างว่าสคริปต์สามารถจัดการไฟล์ crontab ได้อย่างไรโดยไม่ต้องแก้ไขโดยตรง man crontabอธิบายวิธีการทำงาน
Monty Harder

34

heemayl นั้นถูกต้องเกี่ยวกับตำแหน่งของไฟล์ crontab บน Linux แต่มันอาจแตกต่างกันไปในระบบปฏิบัติการอื่นและ "ในทางทฤษฎี" ก็อาจอยู่ในตำแหน่งที่แตกต่างกันบน Linux โดยพื้นฐานแล้วเมื่อมีอินเทอร์เฟซพิเศษสำหรับการเข้าถึงไฟล์คุณควรใช้มัน วิธีนี้จะช่วยให้มั่นใจcronได้ว่าจะได้รับการตรวจสอบไฟล์ก่อนทำการติดตั้งตรวจสอบให้แน่ใจว่าไฟล์นั้นมีการอนุญาตที่จำเป็นต้องมีและอื่น ๆ ...

ดังนั้นคุณควรคัดลอก crontab จากผู้ใช้รายหนึ่งไปยังอีกคนหนึ่งโดยใช้อินเทอร์เฟซนั้นเช่นนี้ไม่ใช่การเข้าถึงไฟล์โดยตรง

crontab -u <user1> -l | crontab -u <user2>

3
มีหลายเหตุผลที่ดีว่าทำไมไฟล์ crontab ไม่ควรถูกจัดการโดยตรงโดยอะไรนอกเหนือจากระบบปฏิบัติการของตัวเอง นี่เป็นทางออกที่ดีกว่า ฉันคิดว่ามันจะต้องรวมอยู่ในคำตอบอย่างเป็นทางการ
Monty Harder

@MontyHarder ไม่มีคำตอบที่ "เป็นทางการ" จริงๆ มีคำตอบที่ผู้ขอเลือกว่าเป็นประโยชน์ต่อเขา / เธอ (คนที่มีเครื่องหมายถูก) และคำตอบที่ชุมชนเลือก (ด้วยผู้โหวตมากที่สุด) ในระยะสั้นคุณมี 15 ตัวแทนคุณสามารถแนะนำนี่เป็นคำตอบที่ถูกต้องโดย upvoting มัน นอกจากนี้หากคุณต้องการแนะนำการปรับปรุงคำตอบอื่นคุณต้องแสดงความคิดเห็นในคำตอบนั้นมิฉะนั้นผู้เขียนจะไม่ได้รับแจ้งความคิดเห็นของคุณ
Derobert

2
ควันหลงของคำตอบนี้เป็นที่หนึ่งควรเปลี่ยนเส้นทางการส่งออกของcrontab -lไปยังแฟ้มย้ายไฟล์ไปยังระบบอื่น ๆ crontabและท่อมัน หรืออาจจะทำโดยตรง ( crontab -l | ssh $remote_host crontab)
แบล็กไลท์ส่องแสง

6
"เมื่อมีการให้อินเทอร์เฟซพิเศษเพื่อเข้าถึงไฟล์คุณควรใช้" ลองนึกภาพว่าทุกแอปพลิเคชั่นมีอินเทอร์เฟซพิเศษสำหรับการแก้ไขไฟล์กำหนดค่าแทนที่จะแสดงเพียงผ่าน fs นั่นจะค่อนข้างน่ารำคาญที่จะติดตาม
Witiko

1
ในฐานะผู้ถามดั้งเดิมฉันคิดว่าฉันควรจะเข้าใจถึงสิ่งนี้: เลือกคำตอบที่ได้รับการยอมรับบนพื้นฐานของคำถามของฉันตามความหมายที่แท้จริง ตำแหน่งของไฟล์ ความตั้งใจของฉันสำหรับไฟล์นั้นไม่เกี่ยวข้อง ฉันไม่คิดว่าการแก้ไขข้อมูลเพิ่มเติมจะเปลี่ยนคำตอบ แต่อาจถือว่าไม่จำเป็น
Jarmund
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.