Crontab फ़ाइल को संपादित करने का सही तरीका क्या है?


52

मैं अपने वेबसर्वर के लिए awstats को ताज़ा करने की कोशिश कर रहा हूं और समझता हूं कि मुझे सेट अप करने के लिए क्रोन का उपयोग करने की आवश्यकता है। तो प्रत्येक उपयोगकर्ता के पास एक crontab फ़ाइल है?

मैं यहाँ समुदाय / AWStats के निर्देशों का पालन कर रहा था

और यह फ़ाइल में जाने के लिए कहता है: /etc/crontab

उस फ़ाइल में पहले से ही कुछ जानकारी है। यह मुख्य crontabफाइल है या कुछ और? मैंने उस फ़ाइल का उपयोग करने के लिए ऑनलाइन कुछ निर्देश देखे हैं, जो पॉप अप करते हैं crontab -e

ऐसा करने के लिए उपयोग करने के लिए उचित फ़ाइल और सबसे अच्छा तरीका क्या है?

यदि मैं अपने गैर-रूट उपयोगकर्ता के रूप में किसी कार्य को निर्धारित करता हूं, तो क्या यह बिना किसी मुद्दे के साथ निर्दिष्ट समय अंतराल पर ही चलेगा?

crontabइससे पहले कि यह काम करना शुरू कर देगा फाइल में क्रोन की नौकरी बचाने के बाद क्या मुझे सर्वर को पुनरारंभ करना होगा?

जवाबों:


50

ऐसा करने के लिए उपयोग करने के लिए उचित फ़ाइल और सबसे अच्छा तरीका क्या है?

crontab -e यह करने का सबसे अच्छा तरीका है - यह आपको प्रति उपयोगकर्ता crontabs को आसानी से संपादित करने की अनुमति देगा।

यदि मैं अपने गैर-रूट उपयोगकर्ता के रूप में किसी कार्य को निर्धारित करता हूं, तो क्या यह बिना किसी मुद्दे के साथ निर्दिष्ट समय अंतराल पर ही चलेगा?

हां, और यह उस उपयोगकर्ता खाते के विशेषाधिकारों के साथ चलेगा।

एक सिद्धांत के रूप में, सबसे कम विशेषाधिकारों के साथ अनुसूचित कार्यों को चलाने के लिए सबसे अच्छा है जिसे आप दूर कर सकते हैं, इसलिए यदि आप क्या कर रहे हैं तो रूट की आवश्यकता नहीं होगी, रूट का उपयोग न करें। यदि आपको अपने खाते की फ़ाइलों और फ़ोल्डरों तक पहुंचने में सक्षम होने की आवश्यकता नहीं है , तो आप एक नया उपयोगकर्ता बना सकते हैं और उस कार्य के लिए केवल उस उपयोगकर्ता खाते का उपयोग कर सकते हैं । दूसरी ओर यदि आपके कार्य को रूट की आवश्यकता है, तो रूट के क्रॉस्टैब ( su/ sudo suसे रूट तो उपयोग करें crontab -e) का उपयोग करें ।

इससे पहले कि यह काम करना शुरू कर देगा मुझे क्रॉस्टैब फ़ाइल में क्रोन की नौकरी बचाने के बाद सर्वर को पुनरारंभ करना होगा?

नहीं, यह सीधे काम करना शुरू कर देगा (ठीक है, अगले संभव निर्धारित समय)।

फ़ाइल को सीधे संपादित क्यों नहीं किया जाता है? यह कहा स्थित है?

उपयोगकर्ता crontab फ़ाइलों में स्थित हैं /var/spool/cron/crontabs, लेकिन उनकी अनुमतियाँ इस तरह से सेट की जाती हैं कि उन्हें बिना सुपरसुसर अनुमति के ट्रैवर्स नहीं किया जा सकता (लेकिन एक बार खोलने और क्रोन प्रक्रिया विशेषाधिकार को छोड़ देती है, फिर भी यह फ़ाइल तक पहुंच सकता है)।

सिस्टम इन फ़ाइलों को सीधे संपादित करने के लिए अंतिम उपयोगकर्ताओं के लिए डिज़ाइन नहीं किया गया है, और वास्तव में फ़ाइल DO NOT EDIT THIS FILEके शीर्ष पर इस आशय के शीर्ष पर कड़ी चेतावनी है। फ़ाइल को इसके बजाय संपादित करने के लिए डिज़ाइन किया गया है crontab -eजिसके माध्यम से /tmpसंपादन के लिए फ़ाइल का एक अस्थायी दर्पण सेट किया गया है - बिना कड़ी चेतावनी के - जिसके बाद वह स्वयं ही स्थायी क्रॉस्टैब फ़ाइल की जांच और स्थापित करता है। यह सब बिना सुपरयूज़र की अनुमति के किया जा सकता है।

यदि आपने सीधे crontab फ़ाइल को संपादित किया है तो मुझे नहीं पता कि परिणाम क्या होगा। संभवत: यह अगले पुनरारंभ तक प्रभावी नहीं होगा और किसी भी त्रुटि को डीबग करना कठिन हो सकता है।


5
crontab -eआप अपने उपयोगकर्ता crontab को sudo के बिना संपादित कर सकते हैं। उपयोगकर्ता crontabs हैं, /var/spool/cron/crontabsजिसमें एक निर्देशिका है जिसे सुपरयूज़र की अनुमति के बिना एक्सेस नहीं किया जा सकता है (लेकिन इस तरह से कि एक बार क्रोन विशेषाधिकार को छोड़ देता है फिर भी इसे पढ़ने में सक्षम है)। यहां तक ​​कि अगर आप फ़ाइल को सीधे आज़माने और संपादित करने के लिए sudo का उपयोग करते हैं, तो आपको शीर्ष पर एक बड़ी चेतावनी दिखाई देती है, "इसे न करें संपादित करें" - फ़ाइल को उस crontabआदेश का उपयोग करके संपादित करने के लिए डिज़ाइन किया गया है जो एक अस्थायी प्रतिलिपि का उपयोग करता है /tmpऔर फिर इंस्टॉल करता है आप इसे बचाने के बाद।
थोमसट्रेटर

25

हर उपयोगकर्ता के पास अपना है crontab

इसे देखने के लिए बस टाइप करें

crontab -l

और, हाँ, आपने इसे ठीक से देखा है, जब आप जोड़ना चाहते हैं crontabतो बस करो

crontab -e

पहली बार आपसे संपादक के बारे में पूछा जाएगा crontab। जैसा कि आप कहते हैं कि आप एक नौसिखिया हैं, मैं नैनो का उपयोग करने की सलाह दूंगा, यह उपयोग करने के लिए सबसे सरल संपादक है।

क्रॉस्टैब खुद इस तरह से काम करता है

MIN =  Minute 0-60
HOUR = Hour [24-hour clock] 0-23
MDAY = Day of Month 1-31
MON = Month 1-12 OR jan,feb,mar,apr ...
DOW =  Day of Week 0-6 OR sun,mon,tue,wed,thu,fri,sat
COMMAND = Command to be run Any valid command-line

इसलिए हर 15 मिनट में केवल एक काम को शुरू करने के लिए, आप इसे पसंद करते हैं

*/15 * * * mon /home/me/yourscript.sh

और हाँ, यह बहुत महत्वपूर्ण है कि आप अपने क्रोनजोब को उस उपयोगकर्ता के क्रॉतब में डाल दें जिसके पास इसे निष्पादित करने के लिए पर्याप्त अधिकार हैं।

इसलिए यदि आपकी स्क्रिप्ट को रूट या एक विशेष उपयोगकर्ता होने की आवश्यकता है, तो उस उपयोगकर्ता पर मुकदमा करना सुनिश्चित करें और वहां क्रोनजोब जोड़ें।

इसके अलावा बहुत महत्वपूर्ण है!

क्रोनजोब गूंगा है! हाँ मैंने कहा। हमेशा सुनिश्चित करें कि application/command/scriptआपके द्वारा उपयोग किए जा रहे पूर्ण पथ में प्रवेश करना सुनिश्चित करें , क्योंकि क्रॉस्टैब .bashrcया इसके साथ काम नहीं करेगा । आपको हमेशा यह सुनिश्चित करना होगा कि आप क्रॉन को बताएं कि यह फाइलों और निर्देशिकाओं को कहां मिल सकता है।

आपके बाकी सवालों के जवाब देने के लिए:

बेशक यह अपने आप ही चलेगा, बस यही है। लेकिन आपको यह जांचने की आवश्यकता है कि क्रोनजोब वास्तव में ऐसा करता है, या यदि यह कुछ याद कर रहा है। जैसे यह वास्तव में काम करता है यह देखने के लिए लॉगफ़ाइल में लॉग इन करें।

और नहीं, पुनरारंभ की आवश्यकता नहीं है। यदि आप एक नया कर्नेल स्थापित करते हैं, तो लिनक्स के साथ एक पुनरारंभ आम तौर पर केवल आवश्यक होता है। इसका उपयोग करने के लिए आपको रीबूट करना होगा। लिनक्स में रिबूट के बिना लगभग सब कुछ किया जा सकता है। बेशक अपवाद हैं, लेकिन सामान्य तौर पर यह कथन सही है।


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