첨부 파일을 통한 crontab 출력 파일

첨부 파일을 통한 crontab 출력 파일

이메일을 통해 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

관련 정보