การแก้ไขไฟล์ cron ด้วยตนเองดีไหม


12

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

การแก้ไขไฟล์ใน text editor มีอันตรายไหม

ความคิดเห็นในไฟล์เริ่มต้นสับสน บรรทัดแรกบอกว่า

# DO NOT EDIT THIS FILE - edit the master and reinstall.

แต่บรรทัดที่สี่บอกว่า

# Edit this file to introduce tasks to be run by cron.

2
ทำไมไม่เพียงวางสิ่งต่างๆไว้ใน /etc/cron.d?
Zoredache

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

@ ทั้งหมดฉันเดาความแตกต่างเพียงอย่างเดียวคือการตรวจสอบไวยากรณ์ที่ทำโดย crontab-e มันเป็นเพียงบัฟเฟอร์ข้อความที่มีการตรวจสอบไวยากรณ์ คุณยังสามารถเปลี่ยนโปรแกรมแก้ไขตามปกติของคุณและ crontab-e จะโหลดลงไป ความสำคัญของ xyntax นั้นเป็นเพราะไฟล์ทั้งหมดจะถูกละเว้นหากคุณทำผิดพลาด แม้ว่าคุณจะใช้เครื่องมือภายนอกคุณควรใช้ crontab-e เพื่ออ่านไฟล์และส่งกลับไปที่ crontab-e เมื่อเสร็จสิ้น คุณไม่ต้องกังวลเกี่ยวกับไวยากรณ์อีกต่อไป ดีกว่าที่จะแยกไฟล์ออกจากผู้ใช้และงานระบบดังนั้นคุณควรใช้ /etc/cron.d ที่ดีกว่าสำหรับงานของผู้ใช้ / ทดสอบ
m3nda

คำตอบ:


22

หากคุณปรับเปลี่ยนไฟล์ผู้ใช้ภายใต้ crontabs มันควรจะทำงาน อย่างไรก็ตามมีสองประเด็นที่ควรพิจารณา:

  1. หากคุณพิมพ์รายการ cron ผิดในไฟล์คุณจะไม่ได้รับการเตือนเมื่อเทียบกับการใช้crontab -eคำสั่ง
  2. คุณไม่สามารถแก้ไขไฟล์ผู้ใช้ของคุณภายใต้ crontabs ได้โดยตรงโดยไม่ต้องล็อกอินเป็น root หรือใช้ sudo คุณจะได้รับอนุญาตปฏิเสธข้อผิดพลาด

แก้ไข

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


จุดที่บอบบางมาก! ฉันไม่เคยเผชิญกับปัญหาที่สองเนื่องจากรู้ว่าฉันทำงานเหมือนรากเสมอ
Googlebot

4
นอกจากนี้ "ห้ามแก้ไข" ในไฟล์เริ่มต้นเป็นเพราะการอัพเกรด / ติดตั้งใหม่อาจเขียนทับไฟล์นั้น
คริส S

คุณล้มเหลวในการพูดถึงว่าผู้ใช้ที่แก้ไข crontab สูญเสียการตรวจสอบ santax โดยตรงที่crontab -eให้ไว้
อดัม F

1
@ AdamF: นี่คือจุดที่ 1 กำลังพูดถึง!
เลด

8

ถ้าฉันเข้าใจถูกต้องคุณกำลังแก้ไขไฟล์ด้วยตัวแก้ไขข้อความด้วยตนเองเพราะคุณไม่ต้องการใช้ crontab -e ฉันเดาว่าเป็นเพราะใช้ vi เป็นเครื่องมือแก้ไขและคุณไม่คุ้นเคย

คุณเปลี่ยน crontab -e (และสิ่งอื่น ๆ ที่ต้องมีโปรแกรมแก้ไข) เพื่อใช้โปรแกรมแก้ไขนาโนที่คุ้นเคยมากขึ้นโดยการเรียกใช้

export EDITOR=nano

ก่อน

crontab -e

คุณสามารถทำให้นาโนเป็นตัวแก้ไขค่าเริ่มต้นที่อนุญาตโดยแก้ไขไฟล์ ~ / .bash_profile ของคุณเพื่อรวมexport EDITOR=nanoไว้ที่ท้าย

เพื่อตอบคำถามของคุณคุณไม่ควรแก้ไขไฟล์โดยตรงเพราะอาจถูกเขียนทับโดยที่คุณไม่รู้ตัว บรรทัดที่ 4 บอกสิ่งที่พูดเนื่องจากมาจาก crontab ที่คุณควรแก้ไขด้วยตนเอง (อาจกล่าวได้ว่าเป็นบรรทัดแรก)


ขอบคุณสำหรับคำตอบที่สื่อความหมาย ฉันคุ้นเคยกับโปรแกรมแก้ไขคำสั่ง crontab อย่างสมบูรณ์ แต่ฉันใช้ gedit (ไม่ใช่ใน terminal ssh) เนื่องจากฉันเชื่อมต่อกับเซิร์ฟเวอร์โดยตรงจากเดสก์ท็อป linux ของฉัน
Googlebot

ฉันยังแนะนำให้เพิ่มคำสั่งส่งออก EDITOR ลงในไฟล์ bashrc ของคุณเพื่อหลีกเลี่ยงการเขียนทุกครั้งที่คุณล็อกอินเข้าสู่ ssh
m3nda

1
export VISUAL=vi

นี่เป็นวิธีที่ถูกต้องในการเปลี่ยนเครื่องมือแก้ไขสำหรับ crontab

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