2012-12-23 19 views
10

द्वारा क्रोंटैब में कार्यों को सक्षम/अक्षम करें क्या बैश/शैल का उपयोग करके क्रोंटैब कार्यों को सक्षम और अक्षम करने का कोई तरीका है?बैश/शैल

तो जब उपयोगकर्ता सर्वर 1 शुरू करता है, तो यह सर्वर 1 क्रोंटैब लाइन को सक्षम करेगा और इसी तरह। और जब उपयोगकर्ता सर्वर 1 को रोकता है, तो सर्वर 1 क्रोंटैब लाइन अक्षम हो जाती है (#)। क्या यह संभव है और कैसे?

अग्रिम धन्यवाद

*/1 * * * * Server 1 check 
*/1 * * * * Server 2 check 
*/1 * * * * Server 3 check 
+0

आप अपनी सभी स्क्रिप्ट्स द्वारा उपयोग की जाने वाली एक सेंटीनेल निर्देशिका का उपयोग कर सकते हैं, और प्रत्येक स्क्रिप्ट में जांच सकते हैं कि वे जिस उम्मीदवार की अपेक्षा करते हैं वह यहां है - और यदि नहीं, तो निष्पादन निरस्त करें – fge

उत्तर

14
SERVERNUM=$1 

सक्षम करने के लिए:

crontab -l | sed "/^#.*Server $SERVERNUM check/s/^#//" | crontab - 

अक्षम करने के लिए:

crontab -l | sed "/^[^#].*Server $SERVERNUM check/s/^/#/" | crontab - 

ट्रांसक्रिप्ट:

[email protected]$ crontab -l 
*/1 * * * * Server 1 check 
*/1 * * * * Server 2 check 
*/1 * * * * Server 3 check 
[email protected]$ crontab -l | sed '/^[^#].*Server 1 check/s/^/#/' | crontab - 
[email protected]$ crontab -l 
#*/1 * * * * Server 1 check 
*/1 * * * * Server 2 check 
*/1 * * * * Server 3 check 
[email protected]$ crontab -l | sed '/^#.*Server 1 check/s/^#//' | crontab - 
[email protected]$ crontab -l 
*/1 * * * * Server 1 check 
*/1 * * * * Server 2 check 
*/1 * * * * Server 3 check 
+0

ऐसा लगता है कि इसमें # को जोड़ने/निकालना नहीं है क्रोंटैब = =/1 * * * * सर्वर 1 चेक बंद = # */1 * * * * सर्वर 1 चेक – user1621988

+0

मैंने बस इसे अपने सिस्टम पर आजमाया और यह काम किया। – Barmar

+0

वंडरफुल, यह काम करता है, मुझे एकमात्र समस्या का सामना करना पड़ रहा है, जिसमें बैश में सर्वर संख्या गतिशील बनाना है, उस समस्या के साथ, #। * सर्वर $ 1 चेक/काम नहीं करता है, या तो "$ 1"। तो मैं नंबरों में परिवर्तनीय $ 1 कैसे पास करूं? – user1621988

2

मेरा सुझाव है कि आप प्रत्येक सर्वर एक स्क्रिप्ट के लिए /etc/cron.d पर अपनी क्रॉन नौकरियां जोड़ें। तो क्रॉन नौकरी निष्पादित की जानी चाहिए तो क्रॉन स्क्रिप्ट को कुछ मार्कर फ़ाइल के लिए स्कैन करने दें।

+0

एक और आम व्यवस्था निर्देशिका/पथ/से/सर्वर' और फिर 'रन-पार्ट्स/पथ/से/सर्वर' के साथ एक क्रॉन नौकरी है। फिर सर्वर को 'सर्वर' निर्देशिका में अपनी फ़ाइल का नाम बदलने या हटाने के लिए अक्षम करना। ('रन-पार्ट्स' डेबियन-विशिष्ट है, लेकिन यदि आपके प्लेटफ़ॉर्म की कमी है, तो इसे स्वयं रोल करना मुश्किल नहीं है।) – tripleee

0

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

0 22 * * * crontab /home/ME/cron_files/NODE 
0

एक त्वरित और गंदे फिक्स के रूप में, आप उचित क्रॉन स्क्रिप्ट की निष्पादन अनुमति को सक्षम या अक्षम कर सकते हैं।

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

cd /etc/cron.daily 

sudo chmod a-x locate 

यह क्रॉन ढांचे के खिलाफ हो सकता है, लेकिन यह जल्दी से लागू किया जाता है और यह तत्काल जरूरतों के मामले में काम करता है।