Khôi phục công việc cron vô tình bị loại bỏ với crontab -r


64

Tôi đã nhập crontab -rthay vì crontab -evà tất cả các croncông việc của tôi đã được gỡ bỏ.

Cách tốt nhất (hoặc có một) để phục hồi những công việc đó là gì?


30
Là tôi hay nó sẽ không có ý nghĩa hơn đối với crontab -r để hỏi có / không theo mặc định ??
user1446688 16/2/2015

4
Tôi nghĩ rằng có một dấu nhắc có / không sẽ là một ý tưởng tuyệt vời. đặc biệt là vì e & r nằm ngay cạnh nhau .. và crontab -elà một lệnh cron thực sự phổ biến.
JustinP

4
Trong 7 năm làm việc quản trị viên, tôi chưa bao giờ có chuyện này xảy ra với tôi. Bây giờ tôi rất sợ. Thời gian để bắt đầu sao lưu crontabs thường xuyên.
Caja

7
Điều này đã xảy ra với tôi hai lần rồi. Đó là ý tưởng tồi tệ nhất từng có eđể chỉnh sửa và rxóa hoàn toàn không có bất kỳ dấu nhắc nào !!
DaniG2k

9
Điều đầu tiên cần làm alias crontab=crontab -i. Nhưng crontab nên đặt mặc định đó, với điều kiện là e & r nằm cạnh nhau ...
anishsane

Câu trả lời:


49

crontab -r loại bỏ các tập tin duy nhất có chứa các công việc cron.

Vì vậy, nếu bạn không tạo bản sao lưu, các tùy chọn khôi phục duy nhất của bạn là:

  • Trên RedHat / CentOS, nếu công việc của bạn đã được kích hoạt trước đó, bạn có thể tìm thấy đăng nhập cron /var/log/cron. Các tập tin sẽ giúp bạn viết lại các công việc một lần nữa.
  • Một tùy chọn khác là khôi phục tệp bằng công cụ khôi phục tệp. Điều này ít có khả năng thành công hơn, vì phân vùng hệ thống thường là một bận rộn và các lĩnh vực tương ứng có thể đã bị ghi đè.
  • Trên Ubuntu / Debian, nếu tác vụ của bạn đã chạy trước đó, hãy thử grep CRON /var/log/syslog

Tôi không thể bình chọn cho bạn nhưng câu trả lời này là một số hữu ích cho tôi. cảm ơn
Teerath Kumar

1
@RajaRassani Bạn có thể đánh dấu câu trả lời là đúng với một dấu tick, mặc dù. Cảm ơn đã cho ăn trở lại!
SkyDan

điều này chỉ xảy ra với tôi :) tổng số người vô dụng .. Tôi thường sử dụng máy chủ ảo và sao lưu chúng thường
xuyên..vậy

+1 vì đơn giản:}
namezero

Bạn có thể thử vận ​​may tìm kiếm bản sao lưu được tạo bởi trình soạn thảo trong /tmp/crontab.wpMhKS (tất nhiên tên có thể thay đổi). Nó có thể không phải là phiên bản gần đây nhất nhưng trong trường hợp của tôi, nó đã giúp ích rất nhiều
Jong Bor

21

Nếu bạn không có /var/log/crontệp, bạn có thể khôi phục các lệnh (nhưng không phải là định thời gian) từ syslog.

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

sau đó bạn có thể tìm ra hầu hết thời gian bằng cách nhìn vào các dấu thời gian.


1
Trên ubfox tập tin là /var/log/syslog.
Aurelijus Rozenas

@ Aurelijus Rozenas Tôi vô tình thêm sys vào đường dẫn thư mục nên là / var / log / syslog, tôi đã sửa bài đăng của mình.
Meow

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

@Aidin bạn là vị cứu tinh của tôi! Lưu ý đến bản thân: Không bao giờ chỉnh sửa tệp crontab trong khi không gian máy chủ đã đầy.
Shadoath

1
Phew đã gần! Bây giờ tôi đã thêm một cron để sao lưu crontab của mình mỗi ngày :)
SidJ

-5

vi /var/spool/cron/*user*hoặc nếu bạn là rootngười dùng thìvi /var/spool/cron/root


3
Điều này là tồi tệ hơn. Nó chỉnh sửa các tập tin spool mà không thông báo cronrằng tập tin đã được chỉnh sửa. Nó cũng sẽ không hoạt động khi người dùng đã vô tình xóa chúng crontabvì không có tệp để chỉnh sửa.
roaima

Upvote từ tôi vì đã thực sự nêu rõ vị trí của crontab. Tôi đã có một bản sao lưu toàn bộ hệ thống và có thể dễ dàng lấy lại các cronjobs của mình. Cảm ơn!
Cookie
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.