ลบ Crontab หรือไม่


11

แทนที่จะพิมพ์ "crontab -e" ฉันบังเอิญพิมพ์ "crontab" และติดอยู่ตรงกลางของกระบวนการดังนั้นฉันจึงยกเลิกกระบวนการ ตอนนี้เมื่อฉันไป crontab -e มันว่างเปล่าทั้งหมด มันไม่ดีเลย หากฉันไม่สามารถคืนได้ฉันจะต้องเขียนใหม่

มีวิธีใดบ้าง:

  1. รับงาน crontab ของฉันกลับมา? พวกเขาอยู่ในความทรงจำที่ไหน? ไฟล์ crontab เฉพาะบัญชีอยู่ที่ไหนใน linux? หรือ
  2. รับบันทึกของทุกสิ่งที่ cron ทำดังนั้นฉันสามารถย้อนกลับไฟล์ crontab ของฉันได้ ฉันไม่ได้ดูมานานแล้วเหรอ?

3
เพียงกู้คืนจากการสำรองข้อมูลระบบล่าสุดของคุณ
David Heffernan

หากคุณพิมพ์ crontab -r เหมือนที่ฉันทำและพบเธรดนี้คุณสามารถกู้คืนคำสั่งที่อ่านบันทึกจาก / var / log ในกรณีของฉัน syslog.1 มีทุกสิ่งที่ฉันต้องการ
StackUnder

คำตอบ:


14

crontabโดยไม่มีข้อโต้แย้งอ่านไฟล์ crontab จากอินพุตมาตรฐาน ตัวอย่างเช่นคุณอาจใช้:

 echo "* * * * *  run-this-every-minute" | crontab

เมื่อคุณปิดกั้น crontab ของคุณ (กล่าวคือไม่crontab -lแสดงอะไรเลย) ก็ไม่มีทางที่ดีที่จะเอามันกลับคืนมา

ในระบบของฉัน (Ubuntu 11.04) crontabs ส่วนบุคคลจะถูกเก็บไว้/var/spool/cron/crontabs/<USER>- แต่นั่นคือสิ่งที่คุณอุดตันดังนั้นคุณจะไม่ทำอะไรให้ดีเลย (เส้นทางอาจแตกต่างกันในระบบของคุณ)

ฉันเห็นรายการใน/var/log/syslogสำหรับคำสั่งที่ดำเนินการโดยcron; คุณอาจสามารถสร้าง crontab ของคุณขึ้นมาใหม่จากสิ่งนั้น (หรือสิ่งที่เทียบเท่ากับระบบของคุณถ้ามี) แต่มันจะน่าเบื่อ

นี่คือสิ่งที่ฉันทำเพื่อหลีกเลี่ยงปัญหาประเภทนี้:

ฉันเก็บ crontab ของฉันไว้ในไฟล์แยกต่างหากเก็บไว้ในระบบควบคุมแหล่ง ฉันติดตั้งโดยใช้งานเท่านั้น

crontab filename

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


@ นักปีนเขา: ฉันไม่เห็นด้วย หากต้องการบันทึก crontab crontab -l > filenameของคุณใช้ crontab filenameการเรียกคืนนั้น ใช้ส่วนต่อประสานที่ระบบจัดให้ อย่าย้อนหลังและจัดการไฟล์ระบบ สิ่งหนึ่งการอัปเดตไฟล์ไม่จำเป็นต้องบอกให้ระบบทำการอ่านซ้ำอีก crontabคำสั่งจะ อีกอย่างหนึ่งอาจมีความแตกต่างระหว่างสิ่งที่อยู่ในไฟล์และผลลัพธ์ของcrontab -l; บน Ubuntu ไฟล์นี้มีบรรทัดความคิดเห็นเพิ่มเติมที่แนะนำให้คุณไม่แก้ไข
Keith Thompson

ฉันจะลบความคิดเห็นอื่นของฉัน ความคิดเห็นใหม่: คี ธ /var/spool/cron/crontabs/<USER>กล่าวถึงเส้นทาง ใน SUSE เส้นทางของฉันคือแตกต่างกันเล็กน้อย /var/spool/cron/cron/tabs/<USER>(หมายเหตุพิเศษเฉือน): คิดว่าฉันจะพูดถึงมันสำหรับมือใหม่กับ cron และ linux อย่างฉัน คำตอบของคี ธ นั้นถูกต้อง
เขา

5

สคริปต์สำหรับการกู้คืน crontab แบบเต็ม

ฉันสร้างสคริปต์ PHP ที่สามารถกู้คืน crontab ของคุณได้เต็มตามบันทึก

ส่งเอาต์พุตอินสแตนซ์เดียวของทุกคำสั่ง cron ที่รันโดยผู้ใช้ในสัปดาห์ที่แล้ว

ฉันใส่ที่นี่

https://github.com/dangreenisrael/recover_crontab

นี่คือตัวอย่างเอาต์พุต:

perl ~/sorttv/sorttv.pl

/usr/local/bin/flexget

bash ~/scripts/sort_sports.sh

~/scripts/play_recently_added.sh

1

ฉันขอโทษ แต่ฉันไม่สามารถช่วยขอให้ชัดเจน: ทำไมไม่คืนจากการสำรองข้อมูล?

เอ้อขอโทษฉันเห็นว่ามีคนแนะนำแล้ว


0

หากตัวแปร envrionment ของ EDITOR ของคุณคือ EDITOR = vi ให้ลอง

vi -r

เพื่อกู้คืนเซสชั่น อย่าเขียนเซสชั่นที่บันทึกไว้โดยตรงถ้าคุณได้รับหนึ่งไปยังไดเรกทอรี crontab ของคุณ ใช้เป็นแนวทางในการสร้าง crontab ของคุณใหม่โดยใช้

crontab -e

หมายเหตุ: เนื่องจากคุณไม่ได้ระบุ OS, Solaris และ UNIX OS อื่น ๆ จะไม่รู้จักการเปลี่ยนแปลงของไฟล์ crontab ยกเว้นที่สร้างผ่าน crontab -e ถ้าฉันจำได้อย่างถูกต้อง Linux จะทำ


ไม่มีเซสชันที่จะกู้คืน OP พิมพ์มากกว่าcrontab crontab -eดูคำตอบของฉันสำหรับวิธีที่ดีกว่า (IMHO) เพื่อรักษา crontab ของคุณ
Keith Thompson

0

คำตอบที่ยอดเยี่ยมจาก @Keith Thompson - ความคิดที่ดีในการสร้างจาก / var / log / syslog!

ฉันบังเอิญไปบดหน้าผู้ใช้ของฉัน แต่ก็สามารถสร้างมันขึ้นมาใหม่โดยใช้สคริปต์ต่อไปนี้

mkdir ~/syslog
sudo cp /var/log/syslog* ~/syslog/
sudo chmod 777 ~/syslog/*
cat ~/syslog/* | grep "(username)" | grep -o "CMD.*" | sort | uniq

ที่ชื่อผู้ใช้ควรถูกแทนที่ด้วยผู้ใช้ที่มี crontab ที่คุณต้องการสร้างใหม่

โปรดทราบว่าคุณอาจต้อง gunzip เนื้อหาของไฟล์ /var/log/syslog.x.gz ก่อนหากบันทึกถูกบีบอัด (ubuntu zips up syslog.2 +)

นี่จะเป็นเพียงคำสั่งที่ยังอยู่ในบันทึกซึ่งจะอยู่ในช่วง 7 วันที่ผ่านมา ... ดังนั้นหากคุณมีงานรายเดือนที่ไม่ได้ทำงาน ... อาจจะหายไป

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