cronjob의 일부로 아래에 다음 명령이 있습니다. cron이나 명령줄을 통해 명령을 실행하면 Null message body; hope that's ok
.
이메일의 내용은 비어 있지만 파일을 확인해보니 /tmp/sdplogs.out
내용이 들어 있습니다.
스크립트는 /dproxy/scripts/cleanSDP2xLogs.sh
출력을 파일로 보냅니다 /tmp/sdplogs.out
.
내가 도대체 뭘 잘못하고있는 겁니까? 어떤 도움이라도 대단히 감사하겠습니다.
$ /dproxy/scripts/cleanSDP2xLogs.sh | mail -s 'SDP2.X Prod LogArchiving Report' [email protected] < /tmp/sdplogs.out
Null message body; hope that's ok
답변1
|
를 로 바꾸 &&
거나 스크립트가 데이터를 stdout으로 출력하고 를 사용해야 합니다 |
.
를 사용하면 스크립트가 0으로 종료될 때만 &&
명령 mail
이 실행됩니다.
파이프 문자를 사용할 때 스크립트는 파이프가 데이터를 에 전달할 수 있도록 데이터를 stdout으로 보내야 합니다 mail
.
작성한 내용에서 스크립트는 파일에 데이터를 쓰고 mail
파일에서 읽습니다 .병행하여— mail
스크립트가 파일에 아무것도 쓰기 전에 파일을 읽게 됩니다.
답변2
/dproxy/scripts/cleanSDP2xLogs.sh | mail -s 'SDP2.X Prod LogArchiving Report' [email protected] < /tmp/sdplogs.out
cleanSDP2xLogs.sh
당신은 명령에 대한 출력을 파이핑하고 있습니다 mail
. 나는 당신이 의미하는 바가 아니라고 생각합니다. 먼저 실행 cleanSDP2xLogs.sh
하여 /tmp/sdplogs.out을 생성한 다음 /tmp/sdplogs.out을 메일 명령에 입력하려는 것 같습니다 .
그렇다면 다음 |
으로 바꾸면 ;
괜찮을 것입니다.
/dproxy/scripts/cleanSDP2xLogs.sh; mail -s 'SDP2.X Prod LogArchiving Report' [email protected] < /tmp/sdplogs.out
답변3
첨부 파일로 사용하는 또 다른 방법은 -a
다음과 같습니다.
/dproxy/scripts/cleanSDP2xLogs.sh
mail -s 'SDP2.X Prod LogArchiving Report' -a /tmp/sdplogs.out [email protected] << ""