crontab एक विशिष्ट उपयोगकर्ता के रूप में चल रहा है


20

मुझे रोज एक स्क्रिप्ट चलाने की जरूरत है। स्क्रिप्ट को विशिष्ट उपयोगकर्ता के रूप में चलाया जाना चाहिए (उदा। उपयोगकर्ता 1) रूट के रूप में नहीं। इसलिए मैंने क्रोन फ़ाइल को /etc/cron.d पर डाला और उपयोगकर्ता नाम को लाइन (2 वें कॉलम) में रखा। लेकिन यह यह कहते हुए एक त्रुटि देता है कि कमांड नहीं मिला है। मुझे संदेह है कि स्क्रिप्ट को user1 के वातावरण के रूप में नहीं चलाया गया था। क्या मैं कुछ भुल गया?


3
क्या आप कृपया हमारे द्वारा उपयोग की जा रही Crontab प्रविष्टि हमें दिखा सकते हैं?
user9517

जवाबों:


34

केवल /etc/crontabऔर फ़ाइलों में /etc/cron.d/उपयोगकर्ता नाम फ़ील्ड है। उस फ़ाइल में आप यह कर सकते हैं:

1 1 * * * username /path/to/your/script.sh

रूट के क्रॉस्टैब से sudo crontab -eआप उपयोग कर सकते हैं:

1 1 * * * su username -c "/path/to/your/script.sh"

या आप इस तरह से उपयोगकर्ता के वास्तविक क्रॉन्ब का उपयोग कर सकते हैं:

sudo crontab -u username -e

दूसरे स्तंभ किसी भी crontab फ़ाइल में है कि तुम पर चलाने के लिए काम करना चाहता घंटे के लिए है। क्या आपका मतलब छठे फील्ड से है?


/Etc/cron.d में फ़ाइल एक उपयोगकर्ता तर्क लें: help.ubuntu.com/community/CronHowto#Advanced_Crontab और यदि आप रूट के रूप में निष्पादित कर रहे हैं तो आप "sudo su" क्यों कर रहे हैं? किसी भी स्थिति में, आप उपयोगकर्ता के लिए लॉगिन वातावरण का उपयोग करने के लिए "su -l" चाहते हैं, क्योंकि यह समस्या के विवरण से एक PATH समस्या होने की सबसे अधिक संभावना है।
ccc

/Etc/cron.d / / a / crontab के एक्सटेंशन में फाइलें नहीं हैं? सिस्टम पर मुझे /etc/cron.d में सभी फाइलों को हाथ लगाना है।
user9517

आह, वास्तव में। /etc/cron.d/फ़ाइलें हैं का हिस्सा /etc/crontabsudoव्यर्थ भी है। मैं उस हिस्से को हटा दूंगा।
लादादादा

2
सुदो को कोंट्राब में रखने के बारे में: (क) sudo su... आमतौर पर अनावश्यक होता है; sudo -u <user> <command>आमतौर पर पर्याप्त है। (b) अगर कोई TTY अटैच नहीं है (जैसे कि cron द्वारा चलाया जाता है ) तो sudo कुछ सिस्टम को चोक कर देगा। यह आपके sudoers फ़ाइल में तय किया जा सकता है।
19

4

आपको उस उपयोगकर्ता के लिए PATH सेट करने की आवश्यकता हो सकती है, यदि आप जिस निष्पादन योग्य का उपयोग कर रहे हैं, वह है, / usr / स्थानीय / बिन। पथ सेट करने के लिए, क्रोनॉजर्स के सामने कुछ इस तरह रखें:

PATH=/bin:/usr/bin:/usr/local/bin

*/5 * * * * user1 sample_executable

दूसरा तरीका यह है कि आप अपने क्रोनजॉब में sample_executable के लिए पूरी तरह से पथ निर्दिष्ट करें:

*/5 * * * * user1 /path/to/sample_executable

यदि sample_executable निष्पादनयोग्य को मानक PATH में नहीं संदर्भित करता है, तो आपको पहले विकल्प का उपयोग करना चाहिए।


1

उपयोगकर्ता crontabs के लिए विशिष्ट निर्देशिका / var / स्पूल / क्रोन / crontabs में है। फ़ाइल स्वरूप वह है जिसमें उपयोगकर्ता नाम शामिल नहीं है। उपयोगकर्ता crontabs उपयोगकर्ता के स्वामित्व में हैं और मोड 0600 के साथ उपयोगकर्ता के नाम पर है। यह आपकी टैब फ़ाइल को लिखने और crontab -u username filenameउस उपयोगकर्ता के लिए जो भी क्रोन प्रविष्टियों को सेटअप करने के लिए उपयोग कर रहा है, वह सबसे अच्छा है ।

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