Đặt cronjobs hệ thống ở đâu?


11

Nếu tôi cần một cronjob chạy ở cấp hệ thống (nghĩa là không cụ thể cho một người dùng nhất định), làm thế nào để bạn đề nghị tôi tạo nó?

  1. chạy crontab -ebằng root
  2. nối nó vào /etc/crontab
  3. tạo một tập tin xác định cronjob trong /etc/cron.d/
  4. tạo một tệp xác định cronjob trong /etc/cron.*ly/(nhưng chỉ khi khoảng thời gian đó phù hợp với nhu cầu của tôi)

Điều khiến tôi lo lắng nhất là: giải pháp nào trong số những giải pháp này có thể được ghi đè bằng bản cập nhật hệ thống ?

Bổ sung Tôi đoán rằng nếu công việc dài, tôi nên đặt nó trên một tập tin kịch bản riêng , ví dụ như trong /root/bin/. Bạn có đồng ý không?


3
Bạn nên nêu rõ phân phối Unix hoặc Linux mà bạn sử dụng.
jlliagre

Bây giờ tôi mới học :) Tôi nghĩ đó là một hành vi độc lập xa xôi ...
xanh mướt

Câu trả lời:


13

Đừng dùng crontab -e

Tôi sẽ không đặt nó vào crontab -egốc. Điều này thường ít rõ ràng hơn đối với các quản trị viên khác và có khả năng bị mất theo thời gian. Đưa chúng vào /etc/crontabbạn có thể chỉ định chính xác thời gian bạn muốn chúng chạy và bạn cũng có thể chỉ định một người dùng khác.

Địa điểm thay thế

Nếu bạn không quan tâm đến việc chạy tập lệnh với tư cách là một người dùng khác và / hoặc bạn chỉ muốn tập lệnh chạy hàng tuần, hàng ngày, v.v. thì một số bản phân phối cung cấp các thư mục có thể đặt các tập lệnh sẽ tự động được xử lý tại một thời điểm cụ thể.

Ví dụ trong phân phối dựa trên Redhat:

$ ls -dl /etc/cron*
drwxr-xr-x. 2 root root 4096 Nov 29 11:06 /etc/cron.d
drwxr-xr-x. 2 root root 4096 Nov 29 11:06 /etc/cron.daily
-rw-------. 1 root root    0 Nov 23 07:42 /etc/cron.deny
drwxr-xr-x. 2 root root 4096 Nov 29 11:03 /etc/cron.hourly
drwxr-xr-x. 2 root root 4096 Nov 29 11:06 /etc/cron.monthly
-rw-r--r--. 1 root root  457 Sep 26  2011 /etc/crontab
drwxr-xr-x. 2 root root 4096 Sep 26  2011 /etc/cron.weekly

Tôi sẽ thường xuyên đặt các crons cấp hệ thống mà tôi muốn chạy vào một thời điểm cụ thể /etc/cron.dthay vì /etc/crontab, đặc biệt nếu chúng là các tập lệnh phức tạp hơn.

Tôi thích sử dụng các thư mục bên dưới /etc/cron*vì chúng là một nơi rõ ràng hơn nhiều mà các quản trị viên hệ thống khác sẽ biết để xem và các tệp ở đây có thể được quản lý thông qua các gói cài đặt như rpmvà / hoặc apt.

Bảo vệ mục

Bất kỳ thư mục nào tôi đã đề cập đều được chỉ định để đặt các tập lệnh sẽ không bị hủy bởi trình quản lý gói. Nếu bạn lo lắng về việc bảo vệ một mục crontab, thì tôi chắc chắn sẽ không đưa nó vào /etc/crontabtệp, và thay vào đó đặt nó như một tập lệnh thích hợp trong một trong các /etc/cron*thư mục.


1

Tôi sẽ chọn # 4. Nó cho phép các thiết lập hệ thống chọn thời điểm chạy công việc và thông thường chúng thực hiện tốt công việc "chạy khi không bận". Thay đổi bộ lập lịch cron hệ thống cũng sẽ tự động ảnh hưởng đến thời gian chạy của tập lệnh.

Mặt trái là bạn không có quyền kiểm soát trực tiếp khi nó chạy. Nếu bạn cần kiểm soát trực tiếp hơn thì hãy sử dụng # 1.

1 ít có khả năng bị ghi đè bởi bản cập nhật hệ thống. Mặc dù 3 và 4 nên khá an toàn. tất cả phụ thuộc vào cách bạn cập nhật mặc dù. Bản phân phối của bạn có thể cập nhật theo ý muốn, nhưng chỉ có 2, thường có nguy cơ bị ghi đè.

Cuối cùng, tôi sẽ đặt các tập lệnh vào / usr / local / bin Đó là nơi "bình thường" mà tôi đặt những thứ trên toàn hệ thống không được quản lý gói của distro quản lý. / root / bin cũng được chấp nhận nếu nó chỉ được chạy bởi root. Tuy nhiên đây là tất cả chủ yếu là hương vị.


0

Bất kỳ điều nào ở trên sẽ hoạt động, và không có điều nào ở trên nên được ghi đè bằng các bản cập nhật. Sự lựa chọn thực tế đưa ra ý kiến ​​- bất kỳ ba người khác nhau thường sẽ có ít nhất hai nếu không phải là ba câu trả lời khác nhau.

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.