Sự khác biệt giữa cron.d (như trong /etc/cron.d/) và crontab là gì?


18

Sự khác biệt chính giữa thư mục cron.d (như trong /etc/cron.d/) và là crontabgì?

Theo như tôi hiểu, người ta có thể tạo một tập tin như /etc/cron.d/my_non_crontab_cronjobsvà đặt bất cứ điều gì một mong muốn bên trong nó, cũng giống như người ta sẽ đặt chúng trong crontabqua crontab -e.

Vậy sự khác biệt chính giữa hai là gì?


vị trí trong hệ thống, và định dạng.
Rui F Ribeiro

Định dạng? Từ 2 ví dụ tôi đã thấy nó cũng có cú pháp đơn vị 5 lần, hoặc tôi nhầm lẫn với nó crontab.
Bắc cực

Câu trả lời:


24

Sự khác biệt được ghi nhận chi tiết trong các cron(8)manpage trong Debian. Sự khác biệt chính là /etc/cron.dđược điền với các tệp riêng biệt, trong khi crontabquản lý một tệp cho mỗi người dùng; Do đó, việc quản lý nội dung /etc/cron.dsử dụng tập lệnh (để cài đặt và cập nhật tự động) dễ dàng hơn và dễ quản lý hơn crontabbằng trình chỉnh sửa (thực sự cho người dùng cuối).

Sự khác biệt quan trọng khác là không phải tất cả các bản phân phối đều hỗ trợ /etc/cron.dvà các tệp trong đó /etc/cron.dphải đáp ứng một số yêu cầu nhất định (ngoài công việc định kỳ hợp lệ): chúng phải được sở hữu bởi root và phải tuân theo run-parts'quy ước đặt tên ( không có dấu chấm , chỉ chữ cái, chữ số, dấu gạch dưới và dấu gạch nối).

Nếu bạn đang cân nhắc sử dụng /etc/cron.d, nó thường là giá trị xem xét một trong những /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly, hoặc /etc/cron.monthlyđể thay thế.


1
Và đối với một ví dụ trong thế giới thực, các mục trong cron.dthường được thêm vào thông qua cài đặt gói, trong khi các crontabtệp khác nhau chứa đầy những thứ được tạo bởi người dùng tương ứng. IE, gói certbothoặc letsencryptđặt một mục nhập cron.d- trước khi gói có sẵn, sysadmin (root) sẽ thêm một mục trong người dùng root crontabchỉ vào tập lệnh shell / etc. để giữ cho các chứng chỉ được cập nhật.
ivanivan

Cảm ơn Stephen! Tại sao bạn khuyên bạn nên sử dụng các thư mục cron hàng giờ / hàng tuần / hàng tháng? Và BTW, tại sao trang man ở đó được gọi là cron (8) 8 là gì (trang man cho crontab có tên crontab (1)).
Bắc cực

1
@Arcticooling, xem câu hỏi này để được giải thích về(8)
user4556274

Các thư mục hàng giờ, vv làm cho việc thêm các công việc trở nên đơn giản hơn (không cần phải tìm ra cú pháp chính xác) và quan trọng hơn là cho phép hệ thống thay đổi thời gian thực hiện tùy theo hoàn cảnh; điều này đặc biệt hữu ích trên các hệ thống không phải lúc nào cũng bật anacron.
Stephen Kitt

1
Nhược điểm của các hourly|daily|weekly|monthlythư mục là (AFAICT), chúng luôn chạy dưới quyền root và không hỗ trợ trực tiếp chạy với đặc quyền ít hơn.
ilkkachu

5

Tôi muốn nói rằng sự khác biệt chính là sự khác biệt rõ ràng: /etc/crontab/etc/cron.dkhông thể sửa đổi bởi người dùng thông thường, trong khi các crontabs trên mỗi người dùng trong /var/spool/cronđó crontabcông cụ chỉnh sửa, là. ( Tất nhiên, theo cron.allowcron.denytất nhiên.) Tất nhiên trên một hệ thống mà bạn là quản trị viên, bạn có thể sử dụng một trong hai. Trên một hệ thống dùng chung, người dùng thông thường chỉ có thể sử dụng một.

Liên quan đến điều này là trường thêm trong các tệp trên toàn hệ thống, tên người dùng mà công việc chạy.

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.