이메일을 통해 crontab 출력 보고서의 첨부 파일을 받을 수 없습니다. 다음 코드를 시도했지만 빈 파일을 받았습니다.
50 * * * * root touch /home/text_created >>
/home/log_crontab.txt | mail -s "Email Subject" -a "/home/log_contab.txt"
this_is_my_email
이것은 매우 간단한 테스트입니다. crontab과 이메일 전송 기능을 실행하기만 하면 됩니다. 위 코드에 문제가 있나요?
답변1
/home/log_contab.txt
메시지를 보낼 때 파일이 비어 있었기 때문에 빈 파일을 받았습니다 .
왜:
익명 파이프( )의 양쪽에 있는 프로세스가 |
동시에 시작되므로 왼쪽 명령이 STDOUT(이 있다고 가정)을 파일에 추가할 때쯤에는 /home/log_contab.txt
명령 mail
이 실행을 완료합니다( /home/log_contab.txt
다음과 같은 빈 파일 포함). 첨부 파일(of)의 시작 부분이 비어 있었을 수도 있기 때문입니다.
원하는 것을 얻으려면 차례대로 달려가세요.가정 어구:
50 * * * * command_1 && command_2
이에 따라 명령을 변경하십시오.
답변2
출력이 파이프되는 방식이 mail
올바르지 않습니다. 출력을 파일로 리디렉션하므로 아무 것도 파이프로 전송되지 않습니다. 파이프를 사용하면 두 명령이 동시에 실행되므로 mail
첫 번째 명령이 완료될 때까지 기다릴 필요가 없습니다.
순차적으로 실행하는 데 사용합니다 ;
.
출력이 생성되지 않습니다 touch
. cron 작업이 성공했다는 메시지를 기록하려면 메시지를 명시적으로 작성해야 합니다.
50 * * * * root if touch /home/text_created; then echo "Touch successful"; else echo "Touch failed"; fi >> /home/log_crontab.txt 2>&1; mail -s "Email Subject" -a "/home/log_contab.txt" this_is_my_email