Câu hỏi Crontab được lưu trữ ở đâu?


Kể từ khi nâng cấp crontab của người dùng của tôi đã bị xóa sổ. Đây không phải là lần đầu tiên điều này xảy ra trong năm nay và đó là một nỗi đau khôi phục lại nó mỗi lần.

Tôi muốn có thể sao lưu crontab cho người dùng của mình nhưng tôi cần biết nơi lưu trữ nó.


217
2017-11-13 14:26


gốc


sẽ tốt hơn nếu ai đó cũng có thể đưa ra lý do TẠI SAO nó bị xóa sổ - Walter Tross
@ WalterTross Yeah nó khá khó chịu. Tôi đoán đó là tác dụng phụ của việc cập nhật cron nhưng tôi đồng ý - nó không phải cái gì đó sẽ xảy ra. - Oli♦
Uh, tôi không bị cron của người dùng đó bị xóa khi nâng cấp gói cron! - pl1nk
@ pl1nk Tôi không có ý tưởng gì xóa nó ra nhưng nó vẫn tiếp tục xảy ra. Ghost trong máy, tôi đoán vậy. - Oli♦
Bảng người dùng được lưu trữ trên một khu vực tạm thời / var / spool / cron / crontabs / $ USER, vì vậy có thể bị xóa trong lần khởi động hoặc nâng cấp tiếp theo của bạn. - fcm


Các câu trả lời:


Trên thực tế, không nên xử lý các tệp đó bằng tay. Mỗi crontab trang người đàn ông:

Mỗi người dùng có thể có crontab của riêng mình và mặc dù
  đây là những tập tin trong /var/spool/cron/crontabs, họ không phải
  dự định được chỉnh sửa trực tiếp.

Tệp dưới /var/spool được coi là tạm thời / làm việc, đó là lý do tại sao họ có thể bị xóa trong khi nâng cấp, mặc dù xem xét kỹ hơn cron kịch bản nâng cấp của gói có thể làm sáng tỏ điều này.

Dù sao, nó luôn luôn là một thực hành tốt để sao lưu các mục cron của bạn hoặc giữ chúng trong một tập tin trong thư mục chủ của bạn.

Tôi cho rằng bạn đang sử dụng crontab -e để tạo các tệp crontab khi đang di chuyển. Nếu vậy, bạn có thể nhận được một "bản sao" của tập tin crontab của bạn bằng cách thực hiện crontab -l. Đặt ống đó vào tệp để nhận "bản sao lưu":

crontab -l > my-crontab

Sau đó, bạn có thể chỉnh sửa tập tin my-crontab để thêm hoặc sửa đổi các mục nhập, sau đó "cài đặt" nó bằng cách cho nó vào crontab:

crontab my-crontab

Điều này cũng kiểm tra cú pháp giống như crontab -e.


279
2017-11-13 15:21



crontab -l dễ hơn là trải qua /var/spool/cron/crontabs/$USER chủ yếu là do các quyền kỳ lạ trên tệp đó. - Oli♦
Các iptables-save của cron. Tốt đẹp... - Parthian Shot
nếu bạn sử dụng tài khoản gốc của bạn cho crontab, thì sudo crontab -l của nó> root-crontab cho rễ crontab! - FreeSoftwareServers
Có lẽ chúng ta nên đặt một crontab để tự động trở lại chính nó lên> :)? - PascalVKooten
Poking thông qua /var/spool/cron/crontabslà tiện dụng khi bạn muốn sắp xếp hoặc kiểm tra crontabs từ nhiều người dùng. - dhasenan


Của nó được lưu trữ bên trong /var/spool/cron/crontabs thư mục dưới tên người dùng.


46
2017-11-13 14:29





Cuối cùng tôi đã phát hiện ra tại sao crontabs của tôi và Postfix cài đặt tiếp tục phá vỡ sau khi khởi động. Đó là một lý do thực sự ngu ngốc nhưng ...

Tôi đã có /var/spool gắn như một tmpfs RAM-drive.

Nghe có vẻ ngu ngốc, nhưng tôi đã theo một trong những bản chỉnh sửa SSD cũ để kéo dài tuổi thọ của SSD của tôi. Khi làm như vậy, tôi đã gắn một cách mù quáng /tmp, /var/tmp và /var/spool như tmpfs mà không nghĩ đến hậu quả. tôi đã nghĩ /var/spool giống như /proc/ hoặc là /run/ và nó chỉ hữu ích trong suốt thời gian của phiên. Tôi rõ ràng là sai.


27
2018-05-30 13:20



Nên an toàn để gắn kết /tmp như tmpfs, nhưng không /var/tmp hoặc là /var/spool. /tmp được sử dụng cho bộ nhớ tạm thời có thể bị mất khi khởi động lại. /var/tmp được sử dụng cho bộ nhớ tạm thời sẽ vẫn còn sau khi khởi động lại. Và như bạn đã khám phá, /var/spool là dành cho dữ liệu được xử lý, cũng sẽ vẫn còn sau khi khởi động lại. - thomasrutter
Xem pathname.com/fhs/2.2/fhs-5.15.html - thomasrutter
Cũng lưu ý rằng số lượng ghi không còn là vấn đề với SSD hiện đại. - thomasrutter


Để liệt kê tất cả các công việc cron từ tất cả người dùng trong hệ thống của bạn:

for user in $(cut -f1 -d: /etc/passwd)
do
  echo $user
  crontab -u $user -l
done

Một giải pháp thay thế cho vấn đề của bạn là đặt chúng vào thư mục cron.d và chỉ định người dùng thích hợp cho mỗi cron như trong ví dụ:

00 01 * * * user /home/user/user-script.sh

10
2018-03-28 12:39



nếu bạn đang khôi phục crontab từ ổ đĩa khác, điều này sẽ không hoạt động vì crontab -u đang chạy từ hệ thống hiện tại của bạn. - JVE999
Trong khi tôi cho rằng đó là một lớp lót trong đó nó vừa với ít hơn 80 ký tự và có thể đọc được, tôi thường đặt mã ở định dạng sao cho một người có thể sao chép hoặc dán hoặc đặt trong một tập lệnh (và, trong một kịch bản, điều này sẽ không phải là một dòng mã). Đang đề xuất chỉnh sửa ... - Parthian Shot
Ngoài ra, tôi chuẩn bị biến nó thành while read user lặp lại, để xử lý trường hợp tên người dùng chứa dấu cách, nhưng dường như đó không phải là vấn đề. Tập hợp các ký tự tên người dùng rất hạn chế. - Parthian Shot