linux: दिए गए डायरेक्टरी में कमांड को कैसे चलाया जाता है


16

मैं बस एक क्रोन जॉब के रूप में दिए गए डायरेक्टरी से केवल एक कमांड (वास्तव में इसकी एक शेल स्क्रिप्ट) चलाना चाहता हूं। मैं इसे कैसे चला सकता हूं ताकि यह बिना उपयोग किए किसी निर्देशिका में सेट हो जाए cd

जवाबों:


16

आपका सवाल थोड़ा समझ में आता है। का उपयोग करें cd। यदि आप इसका उपयोग न करने के लिए जवाब नहीं मांगते हैं cdक्योंकि आपने इसे आज़माया है और यह काम नहीं किया, तो संभव है कि आपने इसे सही ढंग से कॉन्टैब में दर्ज नहीं किया हो।

सबसे आसान तरीका यह होगा कि एक छोटी सी शेल स्क्रिप्ट लिखी जाए जो आपके मुख्य कार्य को cd और रन करेगी, फिर स्क्रिप्ट को क्रोन करें।


1
Crontab मुझे एक काम के अंदर कई कमांड डाल सकते हैं? यदि नहीं, तो मुझे सीडी [पथ] को हार्कोड करना होगा । और रास्ता बदल सकता है, इस प्रकार वास्तव में परेशान करने वाले मुद्दों को और भी विकेन्द्रीकृत विन्यास का कारण बनता है, जो कि कुछ ऐसी चीज़ है जो मैं हर कीमत पर टाल रहा हूँ।
लाश

1
@ ज़िन: हाँ, आप एक काम के अंदर कई कमांड रख सकते हैं (जैसे उन्हें अर्धविराम या उन्हें अलग करना &&), लेकिन आप एक अलग स्क्रिप्ट भी लिख सकते हैं जिसमें सभी कमांड होते हैं और सिर्फ स्क्रिप्ट को क्रोन में डालते हैं, जैसे डेनेय ने सुझाव दिया था। आपकी स्क्रिप्ट कुछ ऐसा कर सकती है जैसे यदि आप चाहें तो डायरेक्टरी को कॉन्फ़िगरेशन फ़ाइल से पढ़ सकते हैं - बिंदु यह है, हालाँकि आप अपनी स्क्रिप्ट में निर्देशिका का नाम प्राप्त करना चाहते हैं, यह कोई बहाना नहीं है cd
डेविड जेड

समझा। मैं सीधे crontab पर cd का उपयोग करना चाहूंगा क्योंकि अगर मैं इसे किसी फ़ाइल में लिखता हूं, तो मुझे इसे प्रत्येक फ़ाइल में संपादित करना होगा जो नाजुक / आसान-से-ब्रेक कॉन्फ़िगरेशन के लिए बनाता है।
लाश

3
और अगर आप crontab फ़ाइल में cd डालते हैं, तो आपको इसे प्रत्येक crontab फ़ाइल में संपादित करना होगा। मैं समस्या को नहीं समझता। शायद आप समझा सकते हैं कि आप और अधिक पूरी तरह से क्या करने की कोशिश कर रहे हैं।
गैरीजोन

और crontab फ़ाइल से शेल स्क्रिप्ट चलाने का दूसरा कारण यह सुनिश्चित करना है कि पर्यावरण सही तरीके से सेट है। क्रॉन जॉब के लिए दिया जाने वाला वातावरण आमतौर पर मुश्किल से न्यूनतम होता है, इसलिए आपको आमतौर पर इसे और अधिक उपयोगी बनाने के लिए इसे रीसेट करने की आवश्यकता होती है।
जोनाथन लेफ़लर

60

बस स्क्रिप्ट का पथ निर्दिष्ट करें। इसके लिए कोई आवश्यकता नहीं cd:

0 12 * * * /path/to/script args

अपनी स्क्रिप्ट में फ़ाइलों के लिए लग रहा है ., तो आप होगा का उपयोग करना होगा cd:

0 12 * * * cd /some/dir && /path/to/script args


4
&&, जैसा कि उत्तर में @WillSheppard लिंक है, इससे बेहतर होगा ;क्योंकि &&पिछली कमांड सफल होने पर ही अगली कमांड चलती है।
मैक्स हाइबर

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