cron이 백업 스크립트 이메일을 보내는 것을 중지하시겠습니까?

cron이 백업 스크립트 이메일을 보내는 것을 중지하시겠습니까?

매 시간마다 내 Minecraft 서버에 월드 데이터를 백업하기 위해 cron을 사용하는 백업 스크립트를 설정했는데, 플레이어가 끊임없이 월드를 편집하고 있기 때문에 tar는 파일을 읽는 동안 파일이 변경되었다는 메시지를 표시합니다. 스크립트의 tar에 --ignore-command-error를 추가하여 수동으로 실행할 때 오류를 억제했지만 cron은 여전히 ​​읽는 동안 파일이 변경되었다는 메일 메시지를 보내고 결국에는 실행 중이어서 Got my mail이 넘칩니다. 매시간. 이 문제를 해결하는 방법을 아는 사람이 있나요? 스크립트는 다음과 같습니다.

filename=$(date +%Y-%m-%d)
cd /home/minecraft/Server/
for world in survival survival_nether survival_the_end creative superflat
do
if [ ! -d "/home/minecraft/backups/$world" ]; then
mkdir /home/minecraft/backups/$world
fi
find /home/minecraft/backups/$world -mtime +1 -delete
tar --ignore-command-error -c $world/ | nice -n 10 pigz -9 > /home/minecraft/backups/$world/$filename.tar.gz
done

답변1

Cron은 명령을 실행하는 동안 나타날 수 있는 모든 출력이 포함된 이메일을 보내려고 시도합니다. 크론 매뉴얼 페이지에서:

명령이 실행되면 모든 출력이 crontab 소유자(또는 crontab의 MAILTO 환경 변수가 있는 경우 해당 사용자)에게 메일로 전송됩니다. -s 옵션을 사용하여 모든 작업 출력을 syslog로 보낼 수도 있습니다.

따라서 특정 crontab 항목에 대해 이를 비활성화하려면 모든 명령 출력을 캡처하여 파일이나 /dev/null.

30 * * * * notBraiamsBackup.sh >/dev/null 2>&1

답변2

/dev/null모든 것을 파이핑하는 대신 (무언가 잘못되었을 때 무슨 일이 일어나고 있는지 알지 못하게 될 수 있음) 다음과 같이 스크립트를 로그 파일로 파이핑할 수 있습니다 .

30 * * * * backup.sh > ~/logs/backup.log

메일 수신을 중지하려면 MAILTOcrontab 파일 시작 부분에 있는 빈 문자열로 변수를 설정하면 됩니다.

MAILTO=""

답변3

특정 cron 작업에 대한 이메일을 원하지 않는 경우 >/dev/null 2>&1줄 끝에 다음을 추가하면 됩니다.

30 * * * * backup.sh >/dev/null 2>&1

답변4

다음을 추가해야 합니다.그누 타르주문하다:--warning=파일 변경 없음

이렇게 하면 모든 것이 억제됩니다."%s: 파일을 읽는 동안 파일이 변경되었습니다." 메시지. 이 솔루션을 사용하면(모든 것을 /dev/null로 리디렉션하는 대신) 문제가 발생할 때 오류 메시지를 계속 받을 수 있습니다.


와 함께- 경고하다태그 다양한 메시지를 활성화 및 비활성화할 수 있습니다.아스팔트인쇄. 사용할 수 있는 모든 키워드가 포함된 매뉴얼의 관련 부분은 다음과 같습니다.https://www.gnu.org/software/tar/manual/html_section/tar_27.html.

참고: "를 추가하면아니요-" 키워드 앞에 메시지가 표시되지 않습니다.

관련 정보