रूट crontab बचा नहीं होगा


6

मैं अपने रूट उपयोगकर्ता के क्रॉस्टैब में एक कॉन्टैब प्रविष्टि जोड़ने की कोशिश कर रहा हूं। मैं अपने नियमित उपयोगकर्ता के crontab के लिए समस्या के बिना एक प्रविष्टि जोड़ने में सक्षम हूं, लेकिन जब मैं suउपयोगकर्ता को रूट करता हूं और एक crontab प्रविष्टि जोड़ने का प्रयास करता हूं तो यह प्रविष्टि को सहेजता नहीं है।

मैं जिस प्रक्रिया से गुजर रहा हूं वह है:

$sudo su
$crontab -e
# write out my crontab entry and then :wq to write and quit vi
$crontab -l
crontab: no crontab for root

मैंने vi का उपयोग करके बाहर निकलने की भी कोशिश की है wq!और यह अभी भी प्रविष्टि को नहीं बचाएगा।

जो प्रविष्टि मैं दर्ज कर रहा हूं वह है:

* * * * * /sayhi.sh

sayhi.sh एक सरल शेल स्क्रिप्ट है जिसका उपयोग करके मैं यह सत्यापित करने का प्रयास कर रहा हूं कि क्रोन नौकरी चल रही है।

अगर मुझे रूट के लिए कॉन्टैब एंट्री बनाने की कोशिश की जा रही है तो क्या कुछ अलग है? मैं चारों ओर देख रहा हूं और मैंने crontab के बारे में कुछ भी नहीं देखा है जो रूट उपयोगकर्ता के लिए विशेष रूप से है।

किसी भी सहायता की सराहना की जाएगी!


जवाबों:


5

आपकी आज्ञाओं को वास्तव में काम करना चाहिए, हालांकि ऐसा नहीं है जैसा मैं करूंगा।

इसके बजाय कोशिश करें: -

sudo crontab -e -u root

फिर सूची में: -

sudo crontab -l -u root

एक सामान्य नियम के रूप में मैं एक रूट शेल को कभी नहीं चलाने के लिए बहुत परेशानी का सामना करता हूं । जब मैं करता हूँ मैं sudo -sबजाय का उपयोग करें sudo su

जब आप vi से बाहर निकलते हैं तो आपको दो लाइनें देखनी चाहिए: -

crontab: no crontab for root - using an empty one
crontab: installing new crontab

यदि आप उन दो पंक्तियों को प्राप्त नहीं करते हैं तो आपको गंभीर परेशानी होती है। यदि आप करते हैं और फिर सूची कमांड कुछ भी नहीं दिखाती है तो मुझे अनुमति की मुसीबतों पर संदेह होगा।

मैं आपकी उदाहरण पंक्ति का भी उपयोग नहीं करूंगा क्योंकि आप सिस्टम को हर दिन, हर दिन एक बार "Sayhi.sh" चलाने के लिए कह रहे हैं। मैं पथ "/ sshihi.sh" के बारे में भी आश्चर्य करता हूं - क्या आपके पास वास्तव में आपके बूट ड्राइव के शीर्ष पर स्क्रिप्ट है? यह एक अच्छा विचार नहीं है या आप शायद "~ / sayhi.sh" का अर्थ है जो इस मामले में जड़ों की होम डायरेक्टरी (आमतौर पर / var / रूट) या आप अपने घर की निर्देशिका का मतलब है । Crontab फ़ाइलों में, चाहे वह स्पष्ट रूप से संपूर्ण पथ को कोड करने के लिए सबसे अच्छा हो।

आप यह भी महसूस करते हैं कि क्रोन जॉब का टैनी आउटपुट किसी भी टर्मिनल पर नहीं जाएगा, बल्कि इसे रूट (डिफ़ॉल्ट रूप से) को ईमेल किया जाएगा।

यदि आप यह जांचना चाहते हैं कि क्रोन सरल कार्य कर रहा है

*/5 * * * *   echo "CRON" > /Users/myname/.cronout

ऐसा करेंगे (पहला क्षेत्र हर 5 मिनट में कार्य को अधिक उचित रूप से चलाता है)।

Crontabs खुद / usr / lib / cron / टैब में संग्रहीत होते हैं। /usr/lib/cronवास्तव में एक लिंक है /var/atऔर अगर आप वहां जाते हैं तो आपको tabsनिर्देशिका मिलेगी और cron.denyफाइल भी । जाँच करें कि किसी ने भी जड़ को नहीं जोड़ा है और यदि आपके पास अभी भी कोई खुशी नहीं है तो आप कोशिश कर सकते हैं:

echo > /var/at/tabs/root

जिसे आपको एक खाली फ़ाइल बनानी चाहिए जिसे आप तब संपादित कर सकते हैं।


करता है ~ कोंट्राब में काम - मैं हमेशा पूरा रास्ता देता हूँ
मार्क

@ मर्क - हां यह करता है। यह क्रॉस्टैब के मालिक के घर जाता है, लेकिन आप की तरह मैं हमेशा क्रॉस्टैब्स (और शेल स्क्रिप्ट और बैश फ़ंक्शंस) में पूरी तरह से रास्तों को एनकोड करता हूं।
टोनी विलियम्स

@TonyWilliams, जड़ स्तर पर 'sayhi.sh' और हर मिनट विशुद्ध रूप से परीक्षण प्रयोजनों के लिए है। वास्तविक शेल स्क्रिप्ट जिसे मैं चलाना चाहता हूं, वह मेरे होम फ़ोल्डर में है और अंत में मासिक अंतराल पर चलेगी। मैं आपके सुझावों को आज़माऊँगा। धन्यवाद!
क्रिस शमित्ज़

हम्म, इसलिए मैंने अपने रूट के कॉट्रैब जॉब को आपके द्वारा सुझाए गए तरीके से सेट किया है (उन सुडोल फ्लैग बीटीटी को इंगित करने के लिए धन्यवाद), हालांकि जब मैं लिखता हूं और रूट कॉन्टैब छोड़ देता हूं तब भी यह मुझे संदेश देता है crontab: no crontab for rootऔर बचाता नहीं है नौकरी में प्रवेश आपने उल्लेख किया कि यह एक अनुमतियाँ समस्या हो सकती है, क्या आपके पास सुझाव है कि मुझे किस फ़ाइल की अनुमतियों की जाँच करनी चाहिए? किसी विशेष फ़ाइल के लिए रूट उपयोगकर्ता की अनुमति नहीं होने का विचार अजीब लगता है, है ना?
क्रिस स्मित्ज़

मैं एक अन्य डिस्क को बंद कर दूंगा और डिस्क उपयोगिता में "अनुमतियाँ ठीक करूंगा"।
टोनी विलियम्स

0

मुझे भी यही समस्या आ रही थी। यहाँ मेरे लिए क्या काम किया गया (और "काम" से मेरा मतलब है कि मैं रूट के रूप में चलाने के लिए एक क्रॉन नौकरी पाने में सक्षम था):

sudo bash -login            # su always tries to force me to change my password >:[
vi /usr/lib/cron/tabs/root  # Just edit it directly

chmod 600 /usr/lib/cron/tabs/root

आपके द्वारा लगाई गई नौकरियां चलेगी, लेकिन crontab -eअभी भी काम नहीं करता है, यहां तक ​​कि क्रॉस्टैब बनाने के बाद भी।

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