กู้คืนงาน cron ที่ลบโดยไม่ตั้งใจด้วย crontab -r


64

ฉันเข้ามาcrontab -rแทนที่crontab -eและงานทั้งหมดของฉันcronถูกลบออก

วิธีที่ดีที่สุด (หรือมีหนึ่ง) ในการกู้คืนงานเหล่านั้นคืออะไร?


30
มันเป็นเพียงฉันหรือจะไม่เหมาะสมกว่าที่ crontab -r จะถามใช่ / ไม่ใช่โดยปริยาย?
user1446688

4
ฉันคิดว่าการมีพรอมต์ใช่ / ไม่ใช่จะเป็นความคิดที่ดี โดยเฉพาะอย่างยิ่งเนื่องจาก e & r อยู่ติดกัน .. และcrontab -eเป็นคำสั่ง cron ที่ใช้กันทั่วไป
JustinP

4
ในงานผู้ดูแลระบบ 7 ปีฉันไม่เคยมีเรื่องแบบนี้เกิดขึ้นกับฉัน ตอนนี้ฉันกลัว ใช้เวลาในการเริ่มต้นสำรอง crontabs เป็นประจำ
Caja

7
เรื่องนี้เกิดขึ้นกับฉันสองครั้งแล้ว มันเป็นความคิดที่เลวร้ายที่สุดeสำหรับการแก้ไขและrลบโดยไม่มีการแจ้งเตือนใด ๆ !!
DaniG2k

9
สิ่งแรกที่ต้องทำalias crontab=crontab -i. แต่ crontab ควรทำให้ค่าเริ่มต้นนั้นเป็นเพราะ e & r อยู่ติดกัน ...
anishsane

คำตอบ:


49

crontab -r ลบไฟล์เดียวที่มีงาน cron

ดังนั้นหากคุณไม่ได้ทำการสำรองข้อมูลตัวเลือกการกู้คืนเท่านั้น:

  • บน RedHat / CentOS ถ้างานของคุณได้รับการเรียกมาก่อนคุณสามารถค้นหาล็อก cron /var/log/cronใน ไฟล์จะช่วยให้คุณเขียนงานใหม่ได้อีกครั้ง
  • ตัวเลือกอื่นคือการกู้คืนไฟล์โดยใช้เครื่องมือการกู้คืนไฟล์ นี่เป็นโอกาสที่จะประสบความสำเร็จน้อยลงเนื่องจากพาร์ติชันระบบมักจะมีงานไม่ว่างและภาคที่เกี่ยวข้องอาจถูกเขียนทับไปแล้ว
  • บน Ubuntu / Debian หากงานของคุณทำงานมาก่อนให้ลอง grep CRON /var/log/syslog

ฉันไม่สามารถลงคะแนนให้คุณได้ แต่คำตอบนี้มีประโยชน์กับฉันบ้าง thankx
Teerath Kumar

1
@RajaRassani คุณสามารถทำเครื่องหมายคำตอบว่าถูกต้องด้วยเครื่องหมายถูกแม้ว่า ขอขอบคุณที่ย้อนกลับ!
SkyDan

สิ่งนี้เพิ่งเกิดขึ้นกับฉัน :) คนเกียจคร้านทั้งหมด .. ฉันใช้เซิร์ฟเวอร์เสมือนและทำการสำรองข้อมูลอย่างสม่ำเสมอ .. ดังนั้นฉันจะทำให้การสำรองข้อมูล .. และรับ crontabs ที่ถูกลบ
JustinP

+1 สำหรับการตรงไปตรงมา:}
namezero

คุณสามารถลองเสี่ยงโชคเพื่อค้นหาตัวสำรองที่แก้ไขโดยใน /tmp/crontab.wpMhKS (แน่นอนว่าชื่ออาจมีการเปลี่ยนแปลง) อาจไม่ใช่เวอร์ชันล่าสุด แต่ในกรณีของฉันมันช่วยได้มาก
Jong Bor

21

ถ้าคุณไม่มี/var/log/cronไฟล์ที่คุณสามารถกู้คืนคำสั่ง ( แต่ไม่กำหนดเวลา) syslogจาก

grep 'CRON.*(yourusername)' /var/log/syslog

จากนั้นคุณสามารถกำหนดเวลาส่วนใหญ่ได้โดยดูที่ datestamps


1
บน Ubuntu /var/log/syslogไฟล์เป็น
Aurelijus Rozenas

@ Aurelijus Rozenas ฉันเพิ่ม sys ไปยังเส้นทางไดเรกทอรีโดยไม่ได้ตั้งใจควรเป็น / var / log / syslog ฉันแก้ไขโพสต์ของฉัน
Meow

2
grep 'CRON.*(yourusername)' /var/log/syslog
Aidan

@Aidin คุณเป็นผู้ช่วยให้ฉัน! หมายเหตุถึงตัวเอง: ห้ามแก้ไขไฟล์ crontab ในขณะที่พื้นที่เซิร์ฟเวอร์เต็ม
Shadoath

1
ว้านั้นอยู่ใกล้! ฉันได้เพิ่มตอนนี้ cron เพื่อสำรอง crontab ของฉันทุกวัน :)
SidJ

-5

vi /var/spool/cron/*user*หรือถ้าคุณเป็นrootผู้ใช้แล้วvi /var/spool/cron/root


3
มันแย่กว่านี้ มันแก้ไขไฟล์สปูลโดยไม่แจ้งให้ทราบcronว่าไฟล์นั้นได้รับการแก้ไข มันจะไม่ทำงานเมื่อผู้ใช้ลบโดยไม่ตั้งใจcrontabเพราะไม่มีไฟล์ที่จะแก้ไข
roaima

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