Tại sao cron yêu cầu MTA để đăng nhập? Có bất kỳ lợi thế đặc biệt cho điều này? Tại sao nó không thể tạo một tệp nhật ký như hầu hết các tiện ích khác?
Tại sao cron yêu cầu MTA để đăng nhập? Có bất kỳ lợi thế đặc biệt cho điều này? Tại sao nó không thể tạo một tệp nhật ký như hầu hết các tiện ích khác?
Câu trả lời:
Hãy xem xét rằng cách ghi nhật ký "tiêu chuẩn" truyền thống là syslog , trong đó siêu dữ liệu có trong các thông báo là "mã cơ sở" và mức độ ưu tiên. Mã cơ sở có thể được sử dụng để phân tách các luồng nhật ký từ các dịch vụ khác nhau để có thể tách chúng thành các tệp nhật ký khác nhau, v.v. (mặc dù mã cơ sở có phần bị hạn chế ở chỗ chúng có ý nghĩa truyền thống cố định.)
Những gì syslog không có, là một cách để tách các tin nhắn cho hoặc từ những người dùng khác nhau và đó là thứ cron
cần có trên hệ thống nhiều người dùng truyền thống. Không có ích khi thu thập tin nhắn từ tất cả các công việc định kỳ của người dùng vào một tệp nhật ký chung nơi chỉ quản trị viên hệ thống mới có thể nhìn thấy chúng. Mặt khác, email tự nhiên cung cấp cho việc gửi tin nhắn đến những người dùng khác nhau, vì vậy đây là một lựa chọn hợp lý ở đây. Giải pháp thay thế sẽ là cron thực hiện công việc thủ công và tạo logfiles vào thư mục nhà của mỗi người dùng, nhưng một hệ thống Unix đa người dùng truyền thống sẽ được coi là có MTA hoạt động, do đó, việc triển khai nó trong cron sẽ chủ yếu là một bài tập vô ích.
Trên các hệ thống hiện đại, tất nhiên có thể có các lựa chọn thay thế.
Tôi giả sử rằng bằng cách "ghi nhật ký", bạn có nghĩa là lưu trữ đầu ra thực tế của công việc. Việc chạy các công việc đã được đăng nhập vào đăng nhập cron /var/cron/log
(đường dẫn có thể khác nhau giữa các hệ thống). Không có MTA cần thiết cho nhật ký này.
Một cron job được chạy khi người dùng có crontab công việc là một phần của.
Trong trường hợp chung, không có gì đảm bảo rằng người dùng này có thể tạo các tệp trên hệ thống (người dùng có thể không phải là người dùng tương tác), đặc biệt không theo /var
hệ thống phân cấp nơi nhật ký thường được tạo. Do đó, cách an toàn nhất để thông báo cho người dùng về các lỗi và đầu ra khác từ một công việc là thu thập chúng và gửi chúng qua email cho người dùng. Điều này cũng sẽ cho phép người dùng thiết lập chuyển hướng email cho tài khoản để có thể thấy ví dụ như lỗi ở vị trí ưa thích của họ.
Nếu người dùng muốn lưu đầu ra của một công việc vào tệp, họ có thể làm như vậy với một chuyển hướng đơn giản trong crontab:
0 */2 * * * "$HOME/scripts/myscript" >"$HOME/logs/myscript.log" 2>&1
Điều này sẽ chạy "$HOME/scripts/myscript"
mỗi giờ, vào giờ và sẽ lưu tất cả đầu ra "$HOME/logs/myscript.log"
. Không có email sẽ được tạo bằng cách chạy công việc này vì tất cả đầu ra được chuyển hướng. Nếu không có 2>&1
, thông báo lỗi vẫn sẽ được gửi qua email.
Điều này cho phép người dùng chọn nơi đầu ra đi.