백업 스크립트를 위해 cron이 메일 발송을 중지 하시겠습니까?


13

cron을 사용하여 매시간 내 Minecraft 서버에서 월드 데이터를 백업하도록 백업 스크립트를 설정했지만 플레이어가 월드를 지속적으로 편집하기 때문에 tar는 파일을 읽는 동안 파일이 변경되었다고 알려줍니다. 스크립트의 tar에 --ignore-command-error를 추가하고 수동으로 실행할 때 오류를 억제하지만 cron은 여전히 ​​파일을 읽는 동안 변경되었다는 내용의 메일 메시지를 보내고 메일이 넘쳐 넘치게합니다. 한 시간에 한 번씩 실행하십시오. 누구든지 이것을 고치는 방법을 알고 있습니까? 이것은 스크립트입니다 :

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

답변:


22

Cron은 명령 실행시 발생했을 수있는 출력이 포함 된 이메일을 보내려고 시도합니다. cron의 매뉴얼 페이지에서 :

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

따라서 특정 crontab 항목에 대해 사용하지 않으려면 모든 명령 출력을 캡처하여 파일 또는로 보내십시오 /dev/null.

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

1
D : 내 예제를 사용!
Braiam

@Braiam-죄송합니다. 게으른 느낌이 들었고 타이핑하는 느낌이 들지 않았습니다. 어쨌든 8-) 같은 것을 입력했을 것입니다.
slm

@Braiam-그게 더 낫습니까? 8-).
slm

내가 찾던 것과 훌륭하게 작동합니다.
Carter

참고 내 CentOS는 7에서 crontab하지 cron, -s수단 selinux context.....
WesternGun

13

모든 것을 배관하는 대신 /dev/null (무슨 일이 발생했을 때 어떤 일이 있었는지 전혀 알지 못할 수도 있음) 스크립트를 다음과 같이 로그 파일로 파이핑 할 수 있습니다.

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

메일 수신을 중지 MAILTO하려면 crontab 파일의 시작 부분에 변수를 빈 문자열로 설정 하십시오.

MAILTO=""

4

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

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

나는이 방법을 선택합니다 : 당신은 모든 것을 추적하지 못했지만 깔끔하게.
WesternGun

0

gnu tar 명령에 다음을 추가해야합니다 . --warning = no-file-changed

모든 " % s : 파일을 읽을 때 변경된 파일이 표시되지 않습니다. "메시지가 표시되지 않습니다. 그리고이 솔루션을 사용하고 모든 것을 / dev / null로 리디렉션하지 않으면 실제로 문제가 발생하더라도 오류 메시지가 계속 표시됩니다.


으로 --warning 플래그 당신은 다른 메시지를 많이 사용하거나 사용하지 않도록 할 수 있습니다 타르 인쇄. 다음은 사용할 수있는 모든 키워드가 포함 된 설명서의 관련 부분입니다. https://www.gnu.org/software/tar/manual/html_section/tar_27.html .

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.