कुछ समय पहले मैंने पढ़ा था कि एक प्रभावी सिस्टम प्रशासक/इंजीनियर की विशिष्ट विशेषताओं में से एक आलस्य है। यह पहली बार में थोड़ा विरोधाभासी लग रहा था, लेकिन फिर लेखक ने बताया कि क्यों:
यदि कोई sysadmin अपना अधिकांश समय मुद्दों को सुलझाने और दोहराए जाने वाले कार्यों को करने में व्यतीत करता है, तो आप संदेह कर सकते हैं कि वह चीजों को ठीक से नहीं कर रहा है। दूसरे शब्दों में, एक प्रभावी सिस्टम एडमिनिस्ट्रेटर/इंजीनियर को अपनी ओर से यथासंभव कम कार्रवाई के साथ दोहराए जाने वाले कार्यों को करने के लिए एक योजना विकसित करनी चाहिए, और इसका उपयोग करके समस्याओं का पूर्वाभास करना चाहिए,
उदाहरण के लिए, भाग 3 में समीक्षा किए गए टूल - Linux टूलसेट का उपयोग करके सिस्टम गतिविधि रिपोर्ट की निगरानी करें इस श्रृंखला के। इस प्रकार, हालांकि वह बहुत कुछ नहीं कर रहा है, ऐसा इसलिए है क्योंकि उसकी अधिकांश जिम्मेदारियां हैं शेल स्क्रिप्टिंग की मदद से इसका ध्यान रखा गया है, जिसके बारे में हम इसमें बात करने जा रहे हैं ट्यूटोरियल।
कम शब्दों में, एक शेल स्क्रिप्ट एक प्रोग्राम से अधिक और कुछ भी कम नहीं है जिसे चरण दर चरण निष्पादित किया जाता है एक शेल द्वारा, जो एक अन्य प्रोग्राम है जो लिनक्स कर्नेल और अंत के बीच एक इंटरफ़ेस परत प्रदान करता है उपयोगकर्ता।
डिफ़ॉल्ट रूप से, उपयोगकर्ता खातों के लिए उपयोग किया जाने वाला शेल आरएचईएल 7 बैश है (/bin/bash). यदि आप एक विस्तृत विवरण और कुछ ऐतिहासिक पृष्ठभूमि चाहते हैं, तो आप इसका उल्लेख कर सकते हैं यह विकिपीडिया लेख.
इस शेल द्वारा प्रदान की गई सुविधाओं के विशाल सेट के बारे में अधिक जानने के लिए, आप इसकी जांच कर सकते हैं मैन पेज, जिसे पीडीएफ प्रारूप में डाउनलोड किया गया है (बैश कमांड). इसके अलावा, यह माना जाता है कि आप लिनक्स कमांड से परिचित हैं (यदि नहीं, तो मैं आपको दृढ़ता से सलाह देता हूं कि आप इसके माध्यम से जाएं Newbies से SysAdmin के लिए एक गाइड में लेख टेकमिंट.कॉम प्रारंभ करने से पहले)। अब चलिए शुरू करते हैं।
हमारी सुविधा के लिए, आइए अपनी शेल स्क्रिप्ट को स्टोर करने के लिए एक डायरेक्टरी बनाएं:
# एमकेडीआईआर स्क्रिप्ट। # सीडी स्क्रिप्ट।
और नाम की एक नई टेक्स्ट फ़ाइल खोलें system_info.sh
अपने पसंदीदा टेक्स्ट एडिटर के साथ। हम शीर्ष पर कुछ टिप्पणियां और बाद में कुछ आदेश डालने से शुरू करेंगे:
#!/bin/bash # आरएचसीई श्रृंखला के भाग 4 के लिए लिखित नमूना स्क्रिप्ट। # यह स्क्रिप्ट सिस्टम जानकारी के निम्नलिखित सेट को लौटाएगी: # -होस्टनाम जानकारी: इको-ई "\e[31;43m***** होस्टनाम जानकारी*****\ई[0मी" होस्टनामेक्टल। गूंज "" # -फाइल सिस्टम डिस्क स्थान का उपयोग: इको-ई "\e[31;43m*****फ़ाइल सिस्टम डिस्क स्थान उपयोग*****\ई[0मी" डीएफ -एच। गूंज "" # - सिस्टम में फ्री और यूज्ड मेमोरी: इको-ई "\e[31;43m *****मुफ़्त और प्रयुक्त मेमोरी*****\ई[0मी" नि: शुल्क। गूंज "" # -सिस्टम अपटाइम और लोड: इको-ई "\e[31;43m*****सिस्टम अपटाइम और लोड*****\ई[0मी" अपटाइम। गूंज "" # -लॉग-इन उपयोगकर्ता: इको-ई "\e[31;43m*****वर्तमान में लॉग-इन उपयोगकर्ता*****\ई[0मी" who। गूंज "" # - शीर्ष 5 प्रक्रियाएं जहां तक मेमोरी उपयोग का संबंध है। इको-ई "\e[31;43m*****शीर्ष 5 स्मृति-खपत प्रक्रियाएं*****\ई[0मी" ps -eo %mem,%cpu, com --sort=-%mem | सिर -एन 6. गूंज "" इको-ई "\e[1;32mDone.\e[0m"
इसके बाद, स्क्रिप्ट को निष्पादन की अनुमति दें:
# चामोद +x system_info.sh।
और इसे चलाएं:
./system_info.sh।
ध्यान दें कि बेहतर विज़ुअलाइज़ेशन के लिए प्रत्येक अनुभाग के शीर्षलेख रंग में दिखाए जाते हैं:
वह कार्यक्षमता इस आदेश द्वारा प्रदान की जाती है:
इको-ई "\ ई [रंग1;रंग2मी\e[0m"
कहाँ पे रंग1 तथा रंग 2 क्रमशः अग्रभूमि और पृष्ठभूमि रंग हैं (इस प्रविष्टि में अधिक जानकारी और विकल्पों को समझाया गया है आर्क लिनक्स विकी) तथा वह स्ट्रिंग है जिसे आप रंग में दिखाना चाहते हैं।
जिन कार्यों को आपको स्वचालित करने की आवश्यकता हो सकती है वे अलग-अलग मामलों में भिन्न हो सकते हैं। इस प्रकार, हम संभवतः एक लेख में सभी संभावित परिदृश्यों को कवर नहीं कर सकते हैं, लेकिन हम तीन क्लासिक कार्य प्रस्तुत करेंगे जिन्हें शेल स्क्रिप्टिंग का उपयोग करके स्वचालित किया जा सकता है:
1) स्थानीय फ़ाइल डेटाबेस को अपडेट करें, 2) फ़ाइलों को ढूंढें (और वैकल्पिक रूप से हटाएं) 777 अनुमतियाँ, और 3) अलर्ट जब फाइलसिस्टम का उपयोग एक निर्धारित सीमा से अधिक हो जाता है।
चलिए नाम की एक फाइल बनाते हैं auto_tasks.sh
निम्नलिखित सामग्री के साथ हमारी स्क्रिप्ट निर्देशिका में:
#!/bin/bash # कार्यों को स्वचालित करने के लिए नमूना स्क्रिप्ट: # -स्थानीय फ़ाइल डेटाबेस को अपडेट करें: इको-ई "\e[4;32mस्थानीय फ़ाइल डेटाबेस अद्यतन कर रहा है\e[0m" अद्यतन ख. अगर [$? == 0 ]; फिर गूंज "स्थानीय फ़ाइल डेटाबेस सही ढंग से अपडेट किया गया था।" अन्य गूंज "स्थानीय फ़ाइल डेटाबेस सही ढंग से अद्यतन नहीं किया गया था।" फाई। इको "" # - 777 अनुमतियों वाली फ़ाइलों को ढूंढें और / या हटाएं। इको-ई "\e[4;32m777 अनुमतियों वाली फाइलों की तलाश है\e[0m" # किसी भी विकल्प को सक्षम करें (दूसरी पंक्ति पर टिप्पणी करें), लेकिन दोनों नहीं। # विकल्प 1: पुष्टि के लिए संकेत दिए बिना फ़ाइलें हटाएं। खोज के जीएनयू संस्करण को मानता है। #find -type f -perm 0777 -delete। # विकल्प 2: फ़ाइलों को हटाने से पहले पुष्टि के लिए पूछें। पूरे सिस्टम में अधिक पोर्टेबल। ढूंढें -टाइप f -perm 0777 -exec rm -i {} +; गूंज "" # -अलर्ट जब फ़ाइल सिस्टम का उपयोग एक परिभाषित सीमा से अधिक हो जाता है echo -e "\e[4;32mफ़ाइल सिस्टम उपयोग की जाँच करना\e[0m" दहलीज = 30। लाइन पढ़ते समय; करो # यह चर फ़ाइल सिस्टम पथ को एक स्ट्रिंग के रूप में संग्रहीत करता है FILEYSTEM=$(echo $line | awk '{print $1}') # यह चर उपयोग प्रतिशत (XX%) PERCENTAGE=$(echo $line | awk '{print $5}') को संग्रहीत करता है # % के बिना प्रतिशत का उपयोग करें संकेत। USAGE=${PERCENTAGE%?} अगर [ $USAGE -gt $THRESHOLD ]; फिर गूंज "$FILESYSTEM में शेष उपलब्ध स्थान गंभीर रूप से कम है। प्रयुक्त: $PERCENTAGE" फाई। किया <कृपया ध्यान दें कि दोनों के बीच एक जगह है
<
लिपि की अंतिम पंक्ति में संकेत।क्रोन का उपयोग करना
दक्षता को एक कदम आगे ले जाने के लिए, आप अपने कंप्यूटर के सामने बैठना और उन स्क्रिप्ट को मैन्युअल रूप से चलाना नहीं चाहेंगे। बल्कि, आप उपयोग करेंगे क्रॉन उन कार्यों को समय-समय पर चलाने के लिए शेड्यूल करने के लिए और परिणामों को ईमेल के माध्यम से प्राप्तकर्ताओं की पूर्वनिर्धारित सूची में भेजता है या उन्हें एक फ़ाइल में सहेजता है जिसे वेब ब्राउज़र का उपयोग करके देखा जा सकता है।
निम्नलिखित स्क्रिप्ट (filesystem_usage.sh) प्रसिद्ध चलेंगे डीएफ -एच कमांड, आउटपुट को HTML तालिका में प्रारूपित करें और इसे में सहेजें रिपोर्ट.html फ़ाइल:
#!/बिन/बैश। # शेल स्क्रिप्टिंग का उपयोग करके HTML रिपोर्ट के निर्माण को प्रदर्शित करने के लिए नमूना स्क्रिप्ट। # वेब निर्देशिका। WEB_DIR=/var/www/html. # रिपोर्ट को थोड़ा बेहतर दिखाने के लिए थोड़ा सीएसएस और टेबल लेआउट। गूंज ""> $WEB_DIR/report.html। # होस्टनाम देखें और इसे html बॉडी के शीर्ष पर डालें। होस्ट = $ (होस्टनाम) इको "होस्ट के लिए फाइल सिस्टम का उपयोग$होस्ट
आखरी अपडेट: $(तारीख)
फाइल सिस्टम | आकार | उपयोग % |
---|---|---|
">> $WEB_DIR/report.html। इको $ लाइन | awk '{प्रिंट $1}' >> $WEB_DIR/report.html। गूंज " | ">> $WEB_DIR/report.html। इको $ लाइन | awk '{प्रिंट $2}' >> $WEB_DIR/report.html। गूंज " | ">> $WEB_DIR/report.html। इको $ लाइन | awk '{प्रिंट $5}' >> $WEB_DIR/report.html। गूंज " |