Làm thế nào để sửa đổi một chủ đề email Cronjob


49

Tôi đang điều hành một nửa tá công việc định kỳ khác nhau từ máy chủ lưu trữ của mình tại Hostmonster.com. Khi một cronjob đã được thực thi, tôi nhận được một email có đầu ra của tập lệnh.

Email có định dạng:

Từ: Cron Daemon
Chủ đề: Cron / ramdisk / bin / php5 -c /home5/username/schediated/optizes_mysql.bash

Vấn đề với điều này là chủ đề của email khiến cho việc đọc email liên quan đến cronjob trở nên rất khó khăn.

Có cách nào để sửa đổi chủ đề của email cronjob để dễ đọc hơn không?

Ví dụ:

Từ: Cron Daemon
Chủ đề: Tối ưu hóa cơ sở dữ liệu MySQL

Câu trả lời:


11

Trên các hệ thống của tôi (hầu hết Debian), tất cả đầu ra, từ tập lệnh / chương trình được gọi là mục nhập crontab, được gửi qua email đến account@localhostngười đã khởi tạo cron. Những email này có một chủ đề như của bạn.

Nếu bạn muốn nhận email, hãy viết một tập lệnh không có đầu ra. Nhưng thay vào đó, đặt tất cả đầu ra trong một tệp văn bản.

Và với

mail -s 'your subject' adress@where < textfile

bạn nhận được nó theo cách bạn muốn.


Cảm ơn Michèle. Tôi đã hy vọng sử dụng hệ thống email tự động của Hostmonster nhưng có vẻ như đây sẽ là giải pháp tôi đi cùng. Thay vì nhận email Cron tự động do máy chủ của tôi kiểm soát, tôi sẽ chỉ gửi email của riêng mình.
justinl

53

Hoặc sử dụng lệnh sh noop (:)

0 9-17 * * 1-5    : Queue Summary; PATH=/usr/sbin qshape

Chủ đề vẫn trông có vẻ bùn, nhưng ít nhất nó có tính mô tả và không yêu cầu các tập lệnh ngoại lai.


4
Bây giờ đó là một hack! (Tôi thích nó.)
Maxy-B

8
Lưu ý rằng không gian là quan trọng sau dấu hai chấm.
Patrick Quên

1
Là tiêu đề sẽ là "Tóm tắt hàng đợi"? Và là lệnh "qshape" trong trường hợp này?
Pratik Khadloya

Có vẻ như qshape là một lệnh postfix. Máy unix của tôi sử dụng lệnh "mail". Nhưng lệnh qshape có liên quan ở đây không?
Pratik Khadloya

1
FYI, chủ đề của email sẽ làQueue Summary; PATH=/usr/sbin qshape
Akom

20

Đưa đầu ra công việc định kỳ của bạn vào thư trực tiếp, và sau đó bạn có thể điền vào dòng chủ đề. các 2>&1cú pháp gửi bất kỳ đầu ra lỗi mà nếu không sẽ biến mất.

mycmd 2>&1 | mail -s "mycmd output" myname

2
Tôi đang làm điều này, nhưng nội bộ đối với các lệnh gọi cron của kịch bản vì tôi muốn chủ đề phản ánh sự thành công hay thất bại của kịch bản đang được chạy.
Tom Barron

13

Chịu trách nhiệm của crond trong việc gửi đầu ra lệnh (hoặc không nếu không có) bằng cách chuyển đầu ra và stderr vào 'mailx -E'. Ví dụ:

0 * * * * your-command 2>&1 | mailx -E -s "Descriptive Subject" $LOGNAME

Tùy chọn '-E' của Mailx là tốt bởi vì, giống như crond, nó sẽ không gửi thư nếu không có bất kỳ đầu ra nào để gửi.


1
Biến $ LOGNAME ở đây là gì?
Pratik Khadloya

Có cách nào để gửi email chỉ khi mã thoát của lệnh không bằng không?
Pratik Khadloya

1
@PratikKhadloya, từ crontab (5): Several environment variables are set up automatically by the cron(8) daemon. SHELL is set to /bin/sh, and LOGNAME and HOME are set from the /etc/passwd line of the crontab's owner. PATH is set to "/usr/bin:/bin". HOME, SHELL, and PATH may be overridden by settings in the crontab; LOGNAME is the user that the job is running from, and may not be changed.
lingfish

2
Có nhiều mailxtriển khai; chỉ một số trong số họ cung cấp -Etùy chọn này . Trên Ubuntu bạn muốn bsd-mailxhoặc heirloom-mailxcác gói; các mailutilsgói chứa một Gnu mailxlệnh với một khác nhau -E.
Smylers

2

Một giải pháp khác là viết một kịch bản shell với dòng chủ đề mà bạn muốn gọi đúng lệnh. Trong ví dụ của bạn, đây sẽ là:

#Optimize_MySQL_Database.sh

/ramdisk/bin/php5 -c /home5/username/scheduled/optimize_mysql.bash

Bạn có thể bao gồm thư mục bin của bạn trong đường dẫn bằng cách đặt nó trong tệp crontab.


0

HÃY THỬ NÀY - Trong dòng lệnh thực hiện đoạn mã sau ---

/usr/local/bin/php -q /path /hostname/foldername/Page-You-want-to-execute \
   | **mail -s "*SUBJECT*" YOUR@MAIL.COM.**
  • Đây chỉ là một giới thiệu để hướng dẫn bạn
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.