Vô hiệu hóa tùy chọn xóa của crontab trong CLI


13

Làm thế nào để tôi vô hiệu hóa một lệnh cụ thể, ví dụ crontab -r?

Nó đã xảy ra với tôi hai lần khi tôi vô tình chạy nó, bởi vì Echìa khóa của tôi nằm cạnh Rchìa khóa. Lỗi đánh máy nhỏ là đủ và crontab của bạn đã biến mất.


2
Đừng quên sao lưu các tập tin quan trọng!
wjandrea

Chắc chắn, tôi có @d Daily zip -r /home/./scripts/cronjobs-all.zip / var / spool / cron / crontabs
user66638

Một hệ thống kiểm soát sửa đổi mã nguồn như Mercurial hoặc Git thậm chí sẽ được quản lý các tệp tập lệnh và bảo vệ an toàn trước sự thay đổi hoặc xóa do vô tình. Bạn thậm chí không cần một kho lưu trữ từ xa cho một trong hai. :-)
David Foerster

Câu trả lời:


16

Sử dụng một trình bao bọc xung quanh crontablệnh, ví dụ chức năng này sẽ làm:

crontab () { [[ $@ =~ -[iel]*r ]] && echo '"r" not allowed' || command crontab "$@" ;}

Hàm này kiểm tra nếu -rtồn tại trong đối số của crontab; nếu vậy, thoát với thông báo "r" not allowed, nếu không thì thực thi lệnh.

Đặt nó vào của bạn ~/.bashrcđể tải nó khi khởi tạo tất cả bashcác phiên tương tác .


27

Tôi đề nghị bạn bao gồm

alias crontab="crontab -i"

trong ~/.bashrctệp của bạn (bắt đầu một vỏ mới trước khi thử nghiệm!)

Điều này có nghĩa là mỗi khi bạn chạy crontab, bạn luôn chọn tùy chọn "-i". Nếu bây giờ bạn đưa ra crontab -rlệnh, nó sẽ được xử lý tại crontab -ir, nó sẽ nhắc trước khi xóa tệp crontab:

nick@serv2:~$ crontab -r
crontab: really delete nick's crontab? (y/n) n
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.