Đồng nghiệp của tôi chạy grep | crontab
. Sau đó, tất cả các công việc biến mất. Hình như anh ta đang cố chạy crontab -l
.
Vậy chuyện gì đã xảy ra sau khi chạy lệnh grep | crontab
? Bất cứ ai có thể giải thích?
Đồng nghiệp của tôi chạy grep | crontab
. Sau đó, tất cả các công việc biến mất. Hình như anh ta đang cố chạy crontab -l
.
Vậy chuyện gì đã xảy ra sau khi chạy lệnh grep | crontab
? Bất cứ ai có thể giải thích?
Câu trả lời:
crontab
có thể cài đặt mới crontab
cho người dùng gọi (hoặc người dùng được đề cập root
) đang đọc từ STDIN. Đây là những gì đã xảy ra trong trường hợp của bạn.
grep
không có bất kỳ tùy chọn nào sẽ tạo ra một thông báo lỗi trên STDERR như bình thường và bạn đang chuyển STDOUT của grep
STDIN sang trạng thái crontab
trống do đó bạn crontab
sẽ biến mất.
Làm thế nào anh ta chấm dứt công việc? Anh ấy đã gõ Cc hay Cd? Nếu anh ta gõ Cd, thì nó tương đương với việc chạy crontab < /dev/null
và bạn đã thay thế tệp crontab của người dùng bằng một tệp trống. Mặt khác, nếu bạn giết crontab
bằng Cc, thì crontab có thể đã được bảo tồn, nhưng bạn có thể dễ dàng kiểm tra bằng cách chạy crontab -l
.
Tất cả chương trình này thực hiện là chỉnh sửa các tệp crontab /var/spool/cron/
, vì vậy nếu bạn có bản sao lưu của hệ thống tệp, bạn có thể khôi phục tệp crontab của người dùng từ đó.
Tôi không thấy rằng không có đối số với grep, vì vậy grep sẽ báo lỗi và thực sự tệp crontab sẽ bị thổi bay luôn.
crontab
yêu cầu bạn sử dụng-
làm tên tệp để đọc từ đầu vào tiêu chuẩn. Tôi cho rằng điều này là do quá nhiều người đã thổi bay crontabs của họ với những sai lầm như thế này.