लॉगिंग के लिए क्रॉन को एमटीए की आवश्यकता क्यों है? क्या इसका कोई विशेष लाभ है? यह अधिकांश अन्य उपयोगिताओं की तरह लॉग फ़ाइल क्यों नहीं बना सकता है?
लॉगिंग के लिए क्रॉन को एमटीए की आवश्यकता क्यों है? क्या इसका कोई विशेष लाभ है? यह अधिकांश अन्य उपयोगिताओं की तरह लॉग फ़ाइल क्यों नहीं बना सकता है?
जवाबों:
विचार करें कि लॉगिंग डेटा का पारंपरिक "मानक" तरीका syslog है , जहां संदेशों में शामिल मेटाडेटा "सुविधा कोड" और प्राथमिकता स्तर है। सुविधा कोड का उपयोग विभिन्न सेवाओं से लॉग स्ट्रीम को अलग करने के लिए किया जा सकता है ताकि उन्हें अलग-अलग लॉग फाइल में विभाजित किया जा सके, आदि (भले ही सुविधा कोड कुछ हद तक सीमित हैं कि उन्होंने पारंपरिक अर्थ निर्धारित किए हैं।)
क्या syslog नहीं है, अलग-अलग उपयोगकर्ताओं के लिए या अलग-अलग संदेशों को अलग करने का एक तरीका है, और यह cron
एक ऐसी चीज है जो पारंपरिक बहु-उपयोगकर्ता प्रणाली पर आवश्यक है। यह सभी उपयोगकर्ताओं के क्रॉन जॉब्स के संदेशों को एक आम लॉग फ़ाइल में एकत्रित करने का कोई फायदा नहीं है जहाँ केवल सिस्टम व्यवस्थापक ही उन्हें देख सकता है। दूसरी तरफ, ईमेल विभिन्न उपयोगकर्ताओं को संदेश भेजने के लिए स्वाभाविक रूप से प्रदान करता है, इसलिए यह एक तार्किक विकल्प है। क्रोन के लिए विकल्प मैन्युअल रूप से काम करना और प्रत्येक उपयोगकर्ता के घर निर्देशिका में लॉगफ़ाइल्स बनाना होगा, लेकिन एक पारंपरिक बहु-उपयोगकर्ता यूनिक्स प्रणाली को एक कार्यशील एमटीए माना जाएगा, इसलिए क्रोन में इसे लागू करना ज्यादातर एक होता व्यर्थ व्यायाम।
आधुनिक प्रणालियों पर, वैकल्पिक विकल्प हो सकते हैं, निश्चित रूप से।
मेरा मानना है कि "लॉगिंग" से आपका मतलब नौकरियों के वास्तविक आउटपुट को स्टोर करना है। चल रहा है नौकरियों की पहले से ही में क्रॉन लॉग में लॉग होता है /var/cron/log
(पथ प्रणालियों के बीच भिन्न हो सकती है)। इस लॉग के लिए किसी एमटीए की आवश्यकता नहीं है।
एक क्रोन जॉब उस उपयोगकर्ता के रूप में चलाया जाता है, जिसका क्राउटब जॉब का हिस्सा है।
सामान्य स्थिति में, इस बात की कोई गारंटी नहीं है कि यह उपयोगकर्ता सिस्टम पर फ़ाइलें बनाने में सक्षम है (एक उपयोगकर्ता एक इंटरैक्टिव उपयोगकर्ता नहीं हो सकता है), खासकर /var
पदानुक्रम के तहत नहीं जहां लॉग आमतौर पर बनाए जाते हैं। किसी कार्य से त्रुटियों और अन्य आउटपुट के उपयोगकर्ता को सूचित करने का सबसे सुरक्षित तरीका इसलिए है कि इन्हें एकत्रित करके उपयोगकर्ता को ईमेल द्वारा भेजें। यह उपयोगकर्ता को खाते के लिए ईमेल पुनर्निर्देशन स्थापित करने की अनुमति भी देगा, ताकि वे अपने पसंदीदा स्थान में त्रुटि देख सकें।
यदि उपयोगकर्ता नौकरी के आउटपुट को फ़ाइल करने के लिए सहेजना चाहता है, तो वे क्रॉस्टेब में एक सरल पुनर्निर्देशन के साथ ऐसा कर सकते हैं:
0 */2 * * * "$HOME/scripts/myscript" >"$HOME/logs/myscript.log" 2>&1
यह "$HOME/scripts/myscript"
हर दूसरे घंटे, घंटे पर चलेगा , और सभी आउटपुट को बचाएगा "$HOME/logs/myscript.log"
। इस जॉब को चलाने से कोई ईमेल नहीं बनेगा क्योंकि सभी आउटपुट को रीडायरेक्ट किया गया है। 2>&1
त्रुटि के बिना , त्रुटि संदेश अभी भी ईमेल द्वारा भेजे जाएंगे।
यह उपयोगकर्ता को यह चुनने की अनुमति देता है कि आउटपुट कहां जाता है।