बैकअप स्क्रिप्ट के लिए मेल भेजने वाले क्रोन रोकें?


13

मैंने अपने Minecraft सर्वर पर विश्व डेटा का बैकअप लेने के लिए प्रति घंटा क्रोन का उपयोग करके बैकअप स्क्रिप्ट स्थापित की है, लेकिन क्योंकि दुनिया लगातार खिलाड़ियों द्वारा संपादित की जा रही है, टार मुझे बता रहे थे कि फाइलें पढ़ते समय बदल गईं। मैंने लिपि में टार को -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

क्रोन किसी भी आउटपुट के साथ एक ईमेल भेजने का प्रयास करेगा जो कमांड चलने पर हो सकता था। क्रोन के मैन पेज से:

आदेशों को निष्पादित करते समय, किसी भी आउटपुट को क्रॉस्टैब के मालिक (या यदि ऐसा मौजूद है, तो क्रॉस्टैब में मेल्टो पर्यावरण चर में निर्दिष्ट उपयोगकर्ता के लिए) मेल किया जाता है। -S ऑप्शन का उपयोग करके किसी भी जॉब आउटपुट को syslog में भी भेजा जा सकता है।

तो एक विशिष्ट crontab प्रविष्टि के लिए इसे अक्षम करने के लिए बस सभी कमांड आउटपुट को कैप्चर करें और इसे किसी फ़ाइल या टू में निर्देशित करें /dev/null

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

1
D: मेरे उदाहरण का उपयोग करके!
Braiam

@Braiam - माफ करना मैं आलसी महसूस कर रहा था और इसे टाइप करने का मन नहीं था। मैं वैसे ही 8-10 टाइप किया होगा)।
स्लम

@Braiam - क्या यह बेहतर है? 8-)।
स्लम

महान काम करता है, वास्तव में मैं क्या देख रहा था।
कार्टर

ध्यान दें कि मेरे CentOS 7 में, crontabनहीं के साथ cron, का -sअर्थ है selinux context.....
पश्चिमीगुन

13

इसके बजाय सब कुछ पाइप करने के लिए /dev/null(जो कुछ गलत होने पर क्या हुआ, इस बात का सुराग दिए बिना आप छोड़ सकते हैं), आप अपनी स्क्रिप्ट को इस तरह से फ़ाइलों को लॉग करने के लिए पाइप कर सकते हैं:

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

और मेल्स को रोकने के लिए, अपनी MAILTOचर फाइल की शुरुआत में वेरिएबल को एक खाली स्ट्रिंग पर सेट करें :

MAILTO=""

4

यदि आप एक विशिष्ट क्रोन कार्य के लिए मेल नहीं चाहते हैं, तो आप बस >/dev/null 2>&1पंक्ति के अंत में जोड़ सकते हैं :

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

मैं इस तरह से चुनता हूं: आपने सब कुछ खो दिया, लेकिन बड़े करीने से।
पश्चिमीगुन

0

आपको अपने ग्नू टार कमांड में निम्नलिखित जोड़ना चाहिए : --warning = no-file-change

हम सभी " % s: फ़ाइल को बदल देंगे" जब हम इसे पढ़ते हैं तो यह संदेश बदल जाता है । और इस समाधान का उपयोग करके (और / dev / null को सब कुछ पुनर्निर्देशित नहीं), आप तब भी त्रुटि संदेश प्राप्त कर पाएंगे जब सामान वास्तव में गलत हो जाता है ..


- thewarning फ्लैग के साथ आप बहुत सारे अलग-अलग संदेशों को सक्षम और अक्षम कर सकते हैं जो टार प्रिंट करते हैं। यहां उन सभी कीवर्ड के साथ मैनुअल का प्रासंगिक हिस्सा है जो आप उपयोग कर सकते हैं: https://www.gnu.org/software/tar/manual/html_section/tar_27.html

नोट: किसी कीवर्ड के सामने " नहीं- " जोड़कर , संदेश दबा दिया जाएगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.