Cronjob 이메일 제목을 수정하는 방법


49

Hostmonster.com에서 호스팅하는 6 가지 크론 작업을 실행하고 있습니다. 크론 작업이 실행되면 스크립트 출력과 함께 이메일을 수신합니다.

이메일은 다음과 같은 형식으로 제공됩니다.

보낸 사람 : Cron Daemon
제목 : Cron / ramdisk / bin / php5 -c /home5/username/scheduled/optimize_mysql.bash

이것의 문제점은 이메일의 제목이 이메일과 관련된 cronjob을 읽기가 매우 어렵다는 것입니다.

보다 쉽게 ​​읽을 수 있도록 cronjob 이메일의 제목을 수정하는 방법이 있습니까?

예를 들면 다음과 같습니다.

보낸 사람 : Cron Daemon
주제 : MySQL 데이터베이스 최적화

답변:


11

내 시스템 (대부분의 데비안)에서 crontab-entry라고하는 스크립트 / 프로그램의 모든 출력 account@localhost은 cron을 시작한 사람에게 전자 메일로 전송됩니다 . 이 이메일에는 귀하와 같은 제목이 있습니다.

이메일을 받으려면 자체 출력이없는 스크립트를 작성하십시오. 그러나 대신 모든 출력을 텍스트 파일에 넣으십시오.

그리고

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

당신이 원하는 방식으로받습니다.


감사합니다 Michèle. Hostmonster의 자동 이메일 시스템을 사용하고 싶었지만 이것이 내가 해결 할 솔루션이 될 것 같습니다. 내 호스팅으로 제어되는 자동 Cron 이메일을받는 대신 내 이메일을 보내면됩니다.
justinl

53

또는 sh noop 명령 (:)을 사용하십시오.

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

주제는 여전히 우스꽝스럽게 보이지만 적어도 설명 적이며 외부 스크립트가 필요하지 않습니다.


4
이제 해킹입니다! (좋아요)
Maxy-B

8
콜론 다음에 공백이 중요합니다.
패트릭 잊어

1
제목이 "대기열 요약"입니까? 이 경우 "qshape"명령입니까?
Pratik Khadloya 2016 년

qshape는 postfix 명령 인 것 같습니다. 내 유닉스 머신은 "mail"명령을 사용합니다. 그러나 qshape 명령은 여기서 관련이 있습니까?
Pratik Khadloya 2016 년

1
참고로, 이메일의 주제는 다음과 같습니다Queue Summary; PATH=/usr/sbin qshape
Akom

20

cron 작업 출력을 메일로 직접 파이프 한 다음 제목 줄을 채울 수 있습니다. 2>&1구문 그렇지 사라질 오류 출력을 보낸다.

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

2
나는 이것을하고 있지만 주제가 스크립트 실행의 성공 또는 실패를 반영하기를 원하기 때문에 스크립트 cron 호출 내부.
Tom Barron

13

출력과 stderr을 'mailx -E'로 파이프하여 명령 출력 (또는없는 경우)을 전송하는 책임을 맡습니다. 예를 들면 다음과 같습니다.

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

Mailx의 '-E'옵션은 크론과 마찬가지로 보낼 출력이 없으면 메일을 보내지 않기 때문에 좋습니다.


1
여기 $ LOGNAME 변수는 무엇입니까?
Pratik Khadloya 2016 년

명령의 종료 코드가 0이 아닌 경우에만 이메일을 보내는 방법이 있습니까?
Pratik Khadloya 2016 년

1
@PratikKhadloya, 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
여러 가지 mailx구현이 있습니다. 그들 중 일부만이이 -E옵션을 제공합니다 . 우분투에서는 bsd-mailx또는 heirloom-mailx패키지 를 원합니다 . mailutils패키지는 GNU 포함 mailx다른과 명령을 -E.
Smylers

2

또 다른 해결책은 원하는 명령을 사용하여 올바른 명령을 호출하는 쉘 스크립트를 작성하는 것입니다. 귀하의 예에서 이것은 다음과 같습니다.

#Optimize_MySQL_Database.sh

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

crontab 파일에서 bin 디렉토리를 설정하여 경로에 bin 디렉토리를 포함시킬 수 있습니다.


0

이것을 시도하십시오-명령 행에서 다음 코드를 구현하십시오-

/usr/local/bin/php -q /path /hostname/foldername/Page-You-want-to-execute \
   | **mail -s "*SUBJECT*" YOUR@MAIL.COM.**
  • 이것은 단지 당신을 안내하는 참조입니다
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.