ฉันจะบันทึกไฟล์ crontab ของฉันใน / tmp ได้หรือไม่


11

ฉัน ssh ไปยังเซิร์ฟเวอร์และต้องการเพิ่มงานประจำวันบางอย่าง (โดยเฉพาะเพื่อต่ออายุตั๋ว Kerberos แม้เมื่อฉันออกจากระบบและฉันยังต้องการให้โปรแกรมของฉันในหน้าจอหรือ tmux ทำงานต่อไป) เพื่อ cron ดังนั้นฉันจึงรันcrontab -eและเพิ่มสิ่งต่อไปนี้

00 00 * * * kinit -R
00 12 * * * kinit -R

เมื่อฉันบันทึกมันฉันถูกถามโดยบรรณาธิการ:

File Name to Write: /tmp/crontab.HMpG7V 

/tmpระบบปฏิบัติการไม่สามารถลบไฟล์ได้หรือไม่ โดยเฉพาะอย่างยิ่งหลังจากที่ฉันออกจากเซิร์ฟเวอร์?

ฉันจะเก็บไฟล์ crontab ของฉันได้ที่ไหน ฉันสามารถบันทึกไฟล์ crontab ภายใต้ $ HOME หรือพื้นที่ที่ดีกว่าได้ไหม?


ฉันสามารถบันทึกไฟล์ crontab ภายใต้ $ HOME ได้หรือไม่ ทำไมฉันต้องมี symlink
ทิม

คำตอบ:


15

crontab -eเปิดไฟล์ใน / tmp แทน crontab จริงเพื่อให้สามารถตรวจสอบข้อผิดพลาด crontab ใหม่และป้องกันไม่ให้คุณเขียนทับ crontab จริงของคุณด้วยข้อผิดพลาดเหล่านั้น หากไม่มีข้อผิดพลาด crontab ที่แท้จริงของคุณจะได้รับการอัปเดต หากcrontab -eเขียนตรงไปยัง crontab ที่แท้จริงของคุณคุณจะเสี่ยง cronjobs ทั้งหมดของคุณที่ไม่สามารถทำงานได้เนื่องจากข้อผิดพลาดทางไวยากรณ์ใน crontab ใหม่ของคุณ

sudoedit, visudo, vipwฯลฯ ทำงานบนหลักการเดียวกัน

ไม่ต้องกังวล crontab ที่แท้จริงของคุณอาศัยอยู่ในตำแหน่งที่ไม่ลบเลือนบนดิสก์


ท้ายที่สุดไฟล์ crontab ของฉันถูกเก็บไว้ที่ไหน? ถ้าฉันออกจากระบบเซิร์ฟเวอร์จะเกิดอะไรขึ้นกับไฟล์ crontab ของฉัน (ฉันไม่ใช่ผู้ดูแลระบบและไม่มีสิทธิ์เข้าถึงรูทไปยังเซิร์ฟเวอร์)
ทิม

1
crontab ที่แท้จริงของคุณอาศัยอยู่ที่ใดที่หนึ่ง/var/spool(โดยทั่วไป) แต่คุณไม่ควรแตะ crontab ที่แท้จริงของคุณและไม่ควรใช้ - crontab -eแทน คุณอาจไม่มีสิทธิ์การเข้าถึงที่ถูกต้องในการแก้ไขไฟล์ raw crontab
jayhendren

หากคุณออกจากระบบจะไม่มีอะไรเกิดขึ้นกับ crontab ของคุณ มันไม่ได้อยู่ใน / tmp
jayhendren

(1) ไฟล์ crontab สำหรับผู้ใช้รายบุคคลหรือผู้ใช้ทั้งหมดหรือไม่ (2) ฉันจะตรวจสอบว่าการแก้ไขไฟล์ crontab ของฉันทำงานได้อย่างไร?
ทิม

crontabs ต่อผู้ใช้หนึ่งคน เพื่อตรวจสอบว่า cronjob ของคุณทำงานคุณสามารถตรวจสอบบันทึก cron โดยทั่วไปแล้วจะอยู่ใน /var/log/cron.log แต่อาจเป็นตำแหน่งอื่นเช่นกัน
jayhendren

5

/tmpเป็นที่ที่ไฟล์ crontab ชั่วคราวถูกเขียนไป หลังจากที่คุณบันทึกและออกแล้วcrontabจะยอมรับการเปลี่ยนแปลงไปยังไดเรกทอรีอื่นที่เหมาะสมกว่าในระบบของคุณ (ปกติ/var/spool/cronคือถ้าฉันจำได้ถูกต้อง) ดังนั้นไม่ต้องกังวลระบบปฏิบัติการอาจลบ / tmp ของคุณ แต่จะไม่ลบ crontabs ของคุณ


1

ไฟล์ Crontab อยู่ใน / var / spool / cron / crontabs / ภายใต้ชื่อผู้ใช้หรือ ID ผู้ใช้ เนื่องจากสถานการณ์สามารถเกิดขึ้นได้ที่ crontab ตั้งอยู่ที่นี่ไม่ได้เชื่อมต่อกับบัญชีล็อกอินของคุณอีกต่อไปขอแนะนำให้คุณบันทึกสำเนาไปยังโฮมไดเร็กตอรี่ของคุณพูด /home/userid/.crontab เพื่อให้คุณสามารถกู้คืนได้ง่ายหากคุณต้องการ ถึง. นอกจากนี้ยังอนุญาตให้คุณวางไว้ภายใต้การควบคุมการแก้ไขหากคุณต้องการ

หากคุณย้ายโฮมไดเรกทอรีไปยังระบบอื่นบ่อยครั้งที่ crontab จากไดเรกทอรีสปูลจะไม่มาพร้อมกับมันเว้นแต่ผู้ดูแลระบบของคุณจะคำนึงถึงเรื่องนี้ หรือเป็น / var / spool เสมอสำรองหรือคืนค่าเมื่อระบบต้องมีการทำซ้ำ

ดังนั้นขอแนะนำให้เก็บสำเนา crontab ของคุณไว้ในโฮมไดเร็กตอรี่ของคุณ

ใช้โปรแกรมแก้ไขรายการโปรดของคุณ (pico, vi, emacs ฯลฯ ) เพื่อแก้ไข ~ / .crontab จากนั้นใช้ crontab เพื่อนำไปใช้กับ / var / spool / crontabs แบบนี้:

% pico ~/.crontab; crontab ~/.crontab

หากคุณชอบนามแฝงคุณสามารถเลือกให้เรียกใช้แทนได้


1
ฉันต้องทำอะไรเพื่อให้ไฟล์ crontab ของบ้านแทนที่ไฟล์ crontab ในตำแหน่งอื่นหรือไม่?
ทิม

เพียงเรียกใช้ "crontab ~ / .crontab" และคุณจะใช้กับหนึ่งใน / var / spool / cron / crontabs ใช้ pico, emacs หรือ vi เพื่อแก้ไข ~ / .crontab ก่อนถึงมือเพื่อทำการเปลี่ยนแปลงใด ๆ
JonathanS

สิ่งนี้ไม่ได้ตอบคำถาม
ไม่มีใคร

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