Cron yedek komut dosyası için posta göndermeyi durdurur mu?


13

Minecraft sunucumdaki dünya verilerini saatte cron kullanarak yedeklemek için bir yedek komut dosyası ayarladım, ancak dünyalar oyuncular tarafından sürekli olarak düzenlendiğinden, tar bana dosyaların okunurken değiştiğini söylüyordu. Koddaki katrana --ignore-command-error ekledim ve manuel olarak çalıştırdığımda herhangi bir hatayı bastırıyor, ancak cron yine de dosyaların okunurken değiştirildiğini söyleyen bir posta iletisi gönderiyor ve postalarımı dolduruyor saatte bir koş. Bunu nasıl düzeltebileceğiniz var mı? Bu senaryo:

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

Yanıtlar:


22

Cron, komut çalıştırıldığında oluşabilecek herhangi bir çıktıya sahip bir e-posta göndermeye çalışır. Cron'un man sayfasından:

Komutlar yürütülürken, çıktılar crontab sahibine (veya varsa crontab'daki MAILTO ortam değişkeninde belirtilen kullanıcıya) gönderilir. Herhangi bir iş çıktısı -s seçeneği kullanılarak syslog dosyasına da gönderilebilir.

Belirli bir crontab girişi için devre dışı bırakmak için, tüm komutların çıkışını yakalayın ve ya bir dosyaya veya üzerine yönlendirin /dev/null.

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

1
D: örneğimi kullanarak!
Braiam

@Braiam - üzgünüm tembel hissediyordum ve yazmak gibi hissetmedim. Yine de aynı şeyi yazardım 8-).
slm

@Braiam - daha iyi mi? 8-).
slm

Aradığım şey harika çalışıyor.
Carter

Benim CentOS 7, crontabdeğil cron, -sanlamına gelir selinux context.....
WesternGun

13

Her şeyi borulamak yerine ( /dev/nullbir şeyler ters giderse ne olduğuna dair bir ipucu olmadan sizi bırakabilir), komut dosyalarınızı aşağıdaki gibi günlük dosyalarına yönlendirebilirsiniz:

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

Posta almayı durdurmak için MAILTOdeğişkeni crontab dosyanızın başlangıcında boş bir dizeye ayarlayın :

MAILTO=""

4

Belirli bir cron görevi için posta istemiyorsanız >/dev/null 2>&1, satırın sonuna ekleyebilirsiniz :

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

Bu yolu seçiyorum: her şeyin izini kaybettin, ama düzgünce.
WesternGun

0

Gnu tar komutunuza aşağıdakileri eklemelisiniz : --warning = dosya değiştirilmedi

Bu, tüm " % s: dosyayı okudukça değişti " iletilerini bastırır . Ve bu çözümü kullanarak (ve her şeyi / dev / null'a yönlendirmemekle), işler gerçekten yanlış gittiğinde hala hata mesajları alabilirsiniz.


İle --warning bayrağı o farklı çok sayıda ileti sağlamak ve devre dışı bırakabilir katran baskılar. El kitabının kullanabileceğiniz tüm anahtar kelimelerin alakalı kısmı: https://www.gnu.org/software/tar/manual/html_section/tar_27.html .

Not: Bir anahtar kelimenin önüne " hayır- " eklenmesi durumunda ileti bastırılır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.