सिस्टम क्रोनोजर कहां लगाएं?


11

अगर मुझे सिस्टम स्तर पर चलने वाले क्रोनजॉब की आवश्यकता है (यानी एक निश्चित उपयोगकर्ता के लिए विशिष्ट नहीं) तो आप मुझे इसे बनाने के लिए कैसे सुझाव देंगे?

  1. crontab -eजड़ के रूप में चल रहा है
  2. यह करने के लिए संलग्न /etc/crontab
  3. क्रोनजोब को परिभाषित करने वाली एक फ़ाइल बनाना /etc/cron.d/
  4. क्रोनजॉब को परिभाषित करने वाली एक फ़ाइल बनाना /etc/cron.*ly/(लेकिन केवल अगर ऐसा समय अंतराल मेरी आवश्यकताओं को पूरा करता है)

ज्यादातर मुझे क्या चिंता है: इनमें से कौन सा समाधान संभवतः सिस्टम अपडेट द्वारा अधिलेखित हो जाएगा ?

अतिरिक्त मुझे लगता है कि अगर नौकरी लंबी है तो मुझे इसे एक अलग स्क्रिप्ट फ़ाइल पर रखना चाहिए , उदाहरण के लिए /root/bin/। क्या आप सहमत हैं?


3
आपको यह बताना चाहिए कि यूनिक्स या लिनक्स वितरण का आप क्या उपयोग करते हैं।
jlliagre

मैं अभी सीख रहा हूं :) मुझे लगा कि यह एक विकृत-स्वतंत्र व्यवहार था ...
नीलेश

जवाबों:


13

उपयोग न करें crontab -e

मैं इसे crontab -eजड़ में नहीं डालूंगा । यह आम तौर पर अन्य प्रवेशों के लिए कम स्पष्ट है और समय के साथ खो जाने की संभावना है। उन्हें /etc/crontabआप में डालकर ठीक उसी समय को निर्दिष्ट किया जा सकता है जिसे आप उन्हें चलाना चाहते हैं और आप एक अलग उपयोगकर्ता को भी निर्दिष्ट कर सकते हैं।

वैकल्पिक स्थान

यदि आप स्क्रिप्ट को एक अलग उपयोगकर्ता के रूप में चलाने के बारे में परवाह नहीं करते हैं, और / या आप चाहते हैं कि स्क्रिप्ट साप्ताहिक, दैनिक, आदि चलाने के लिए है, तो कई वितरण निर्देशिका प्रदान करते हैं जहां स्क्रिप्ट रखी जा सकती हैं जो स्वचालित रूप से एक विशिष्ट समय पर संसाधित हो जाएंगी।

उदाहरण के लिए रेडहैट आधारित डिस्ट्रोस के तहत:

$ ls -dl /etc/cron*
drwxr-xr-x. 2 root root 4096 Nov 29 11:06 /etc/cron.d
drwxr-xr-x. 2 root root 4096 Nov 29 11:06 /etc/cron.daily
-rw-------. 1 root root    0 Nov 23 07:42 /etc/cron.deny
drwxr-xr-x. 2 root root 4096 Nov 29 11:03 /etc/cron.hourly
drwxr-xr-x. 2 root root 4096 Nov 29 11:06 /etc/cron.monthly
-rw-r--r--. 1 root root  457 Sep 26  2011 /etc/crontab
drwxr-xr-x. 2 root root 4096 Sep 26  2011 /etc/cron.weekly

मैं कई बार सिस्टम लेवल क्रोन डालूंगा, जिसे मैं /etc/cron.dइसके बजाय एक विशिष्ट समय पर चलाना चाहता हूं /etc/crontab, खासकर यदि वे अधिक जटिल स्क्रिप्ट हैं।

मैं इसके तहत निर्देशिकाओं का उपयोग करना पसंद करता हूं /etc/cron*क्योंकि वे बहुत अधिक स्पष्ट स्थान हैं जो अन्य सिस्टम प्रशासक को देखने के लिए पता चल जाएगा और यहां फाइलों को संकुल इंस्टॉलेशन जैसे rpmऔर / या के माध्यम से प्रबंधित किया जा सकता है apt

प्रविष्टियों की सुरक्षा करना

मैंने जिन निर्देशिकाओं का उल्लेख किया है, उनमें से कोई भी स्क्रिप्ट को डालने के लिए नामित है जो पैकेज मैनेजर द्वारा नष्ट नहीं होगी। यदि आप एक क्रेस्टैब प्रविष्टि की सुरक्षा के बारे में चिंतित हैं, तो मैं निश्चित रूप से इसे /etc/crontabफ़ाइल में नहीं डालूंगा , और इसके बजाय इसे एक /etc/cron*निर्देशिका में एक उचित स्क्रिप्ट के रूप में डाल सकता हूं ।


1

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

नीचे की ओर यह है कि जब यह चलता है तो आपका कोई सीधा नियंत्रण नहीं होता है। यदि आपको अधिक प्रत्यक्ष नियंत्रण की आवश्यकता है तो # 1 का उपयोग करें।

1 सिस्टम अद्यतन द्वारा अधिलेखित होने की कम से कम संभावना है। हालांकि 3 और 4 बहुत सुरक्षित होना चाहिए। यह सब इस बात पर निर्भर करता है कि आप कैसे अपडेट करते हैं। आपका डिस्ट्रो अपडेट कर सकता है, हालांकि यह चाहता है, लेकिन केवल 2, आमतौर पर एक अधिलेखित होने का खतरा होगा।

अंत में, मैं स्क्रिप्ट्स को / usr / लोकल / बिन में डालूंगा, यह "सामान्य" जगह है जहाँ मैंने सिस्टम की विस्तृत चीजों को डिस्ट्रो के पैकेज मैनेजर द्वारा प्रबंधित नहीं किया है। / रूट / बिन स्वीकार्य है और यदि यह केवल रूट द्वारा चलाया जा रहा है। हालांकि यह सब ज्यादातर स्वाद है।


0

उपरोक्त में से कोई भी काम करेगा, और उपरोक्त में से कोई भी अपडेट द्वारा ओवरराइट नहीं किया जाना चाहिए। वास्तविक विकल्प राय के लिए नीचे आता है - किसी भी तीन अलग-अलग लोगों के पास अक्सर तीन अलग-अलग उत्तर नहीं होने पर कम से कम दो होंगे।

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