จะปิดการใช้งานทุกอย่างใน crontab -l ได้อย่างไร?


คำตอบ:


61

crontab -e#แล้วแสดงความคิดเห็นออกแต่ละบรรทัดที่คุณไม่ต้องการที่จะทำงานด้วย


133

ก่อนสำรอง crontab:

crontab -l > my_cron_backup.txt

จากนั้นคุณสามารถล้างมัน:

crontab -r

ในการกู้คืน:

crontab my_cron_backup.txt
crontab -l

2
นี้จะเป็นประโยชน์อย่างยิ่งเมื่อ/tmpได้รับความเสียหาย (และถ้า -e crontab ของคุณใช้mktempใน/tmp.
เควินลี

1
+1 ในที่สุดนี่คือสิ่งที่ได้ผลสำหรับฉัน ขอบคุณ
Pavan

@alex นี่ควรเป็นคำตอบที่ได้รับการยอมรับ
Luis Ferrao

crontab -rคือสิ่งที่ฉันกำลังมองหา ขอบคุณมาก!
forzagreen

64

คุณมีสิทธิ์เข้าถึงรูตหรือไม่? เพียงแค่หยุด cron

sudo /etc/init.d/crond stop

จากนั้นรีสตาร์ทเมื่อคุณพร้อม

sudo /etc/init.d/crond start

5
นั่นคือสมมติว่าคุณต้องการหยุด crontab สำหรับผู้ใช้ทั้งหมดรวมถึงรูท คำตอบที่เลือกและคำตอบของ kubanskamac จะทำเพื่อผู้ใช้ปัจจุบัน (ที่ต้องการ?)
เควิน K

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

4
หากคุณใช้ Ubuntu คุณสามารถใช้งานได้sudo service cron stop
Joel

1
ใน Debian /etc/init.d/cron stopนี้อยู่
Faheem Mitha

2
@Faheem บน Debian ทุกวันนี้มันก็เป็นเช่นservice cron stopนั้น
สตีเฟ่น Kitt

10

หากคุณใช้ vi เป็นตัวแก้ไขให้ป้อน:%s/^/#/โหมดคำสั่ง ในทุกบรรทัด (%) มันจะแทนที่ (s ///) จุดเริ่มต้นของบรรทัด (^) ด้วยแฮช (#)


หากคุณไม่ได้ใช้ vi เป็นเครื่องมือแก้ไขเริ่มต้นคุณสามารถ "บังคับ" การใช้ vi เช่นEDITOR=vi; crontab -eและคุณสามารถใช้เคล็ดลับข้างต้นได้
Betlista

2
หากต้องการยกเลิกการคอมเม้นต์คำสั่งคือ:%s/^#//
NP01

3

ไม่มีความสุขกับตัวเลือกข้างต้นเนื่องจากพวกเขาไม่ได้เป็นหนึ่งในสมุทร

เพื่อปิดการใช้งาน crontab -l | perl -nle 's/^([^#])/# $1/;print' | crontab

การเปิดใช้งาน crontab -l | perl -nle 's/^#\s*([0-9*])/$1/;print' | crontab

ตัวอย่างการใช้งาน (แก้ไขเพื่อแสดงว่าไม่ได้ปิดการใช้งานความคิดเห็น)

$ crontab -l
# Comment
0 0 * * 0 /opt/something.sh

$ crontab -l|perl -nle 's/^([^#])/# $1/;print'|crontab
$ crontab -l
# Comment
# 0 0 * * 0 /opt/something.sh

$ crontab -l|perl -nle 's/^#\s*([0-9*])/$1/;print'|crontab
$ crontab -l
# Comment
0 0 * * 0 /opt/something.sh

ทดสอบสิ่งนี้กับ RHEL และ AIX และควรทำงานนอกกรอบโดยไม่จำเป็นต้องติดตั้งใด ๆ


1
ยังสามารถค้นหารายละเอียดเฉพาะใน cronjob crontab -l | perl -nle 's / ^ # \ s * ([0-1 *]) / $ 1 /; ถ้าพิมพ์ /.+mytexttofind.+/'
เจสัน

คุณช่วยอธิบายได้ไหมว่าทำไมความคิดเห็นไม่ได้รับผลกระทบ รูปแบบที่คุณใช้ในการตรวจจับคืออะไร
Sopalajo de Arrierez

หืมใต้ Debian Jessie ฉันได้รับข้อผิดพลาดดังต่อไปนี้: crontab: usage error: file name must be specified for replace. ดูเหมือนว่าคุณจะต้องระบุไฟล์ (?) เมื่อใช้crontabโดยไม่มีพารามิเตอร์ใด ๆ (ซึ่งเป็นreplaceค่าเริ่มต้น)
fritzmg

2

ในการทดสอบที่ จำกัด ของฉันให้ตั้งค่าเชลล์เป็น / bin / false คุณจะยังคงเห็น/opt/job.shการดำเนินการในบันทึกของคุณ แต่มันจะเป็น noop:

SHELL=/bin/false

*/1 * * * *    root  /some/job.sh

1

ในรสชาติของ Unix / Linux ใด ๆ ที่ฉันรู้:

mv /var/spool/cron  /var/spool/cron_is_disabled

นี้:

  • ปิดใช้งาน crontabs ของผู้ใช้ทั้งหมด
  • แต่ไม่ใช่ระบบ / etc / crontab (/etc/cron.daily เป็นต้น)
  • ยังคงมีอยู่ในการรีบูต
  • เป็นหนึ่งในสายการบิน duh :)

1

ฉันได้แนวคิดจากคำตอบที่ @segaps จัดทำขึ้น

วิธีปิดใช้งาน:

crontab -l | awk '{print "# "$1}' | crontab

การเปิดใช้งาน:

crontab -l | cut -c 3- | crontab

ปัญหาเดียวของการแก้ปัญหาที่จัดหาโดย segaps คือมันจะไม่แสดงความคิดเห็นงานที่ได้รับการแสดงความคิดเห็นโดยผู้ใช้


0

หากต้องการทำสิ่งนี้ให้ใช้ nano เป็นตัวแก้ไข:

sudo env EDITOR=nano crontab -e

จากนั้นแสดงความคิดเห็นในแต่ละบรรทัดที่คุณไม่ต้องการเรียกใช้ด้วย #

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