Computer >> कंप्यूटर >  >> प्रणाली >> Linux

CentOS/RHEL पर सेवाओं और स्क्रिप्ट स्टार्टअप को कैसे प्रबंधित करें?

इस लेख में, हम Linux CentOS/RHEL 7/8 में सेवाओं और स्क्रिप्ट को स्वचालित रूप से प्रारंभ करने के लिए कॉन्फ़िगर करने की मूल बातें सीखेंगे। विशेष रूप से, हम systemd . से परिचित होंगे डेमॉन, सीखें कि सेवाओं को स्टार्टअप से कैसे जोड़ा जाए या उन्हें कैसे हटाया जाए, और लिनक्स में बूट पर स्क्रिप्ट या डेमॉन शुरू करने के वैकल्पिक तरीकों पर विचार करें।

लेख का उद्देश्य आपको लिनक्स में स्वचालित रूप से शुरू की गई सेवाओं या स्क्रिप्ट की सूची को जल्दी से ढूंढना, स्टार्टअप में अपनी सेवाओं या स्क्रिप्ट को जोड़ना या कुछ ऐप्स के स्वचालित स्टार्टअप को अक्षम करना सिखाना है।

Linux में Systemd सेवाओं को प्रबंधित करने के लिए Systemctl का उपयोग करना

सबसे लोकप्रिय लिनक्स डिस्ट्रोस (सेंटोस, आरएचईएल, डेबियन, फेडोरा, और उबंटू) systemd का उपयोग करते हैं init.d . के बजाय स्टार्टअप डेमॉन . सिस्टमड एक लिनक्स सेवा प्रबंधक है जिसका उपयोग अन्य डेमॉन को शुरू करने और उन्हें प्रबंधित करने के लिए किया जाता है। यह /etc/systemd/system . से यूनिट फाइलों का उपयोग करता है (init.d /etc/init.d/ . से प्रयुक्त स्क्रिप्ट ) Systemd आपको OS बूट पर सेवा स्टार्टअप को समानांतर करने की अनुमति देता है।

सिस्टमड को प्रबंधित करने के लिए, systemctl कमांड का उपयोग किया जाता है।

सबसे पहले, सिस्टम को बूट करने के बाद हम systemd . में उपलब्ध इकाइयों की सूची की जांच करेंगे :

systemctl list-units

CentOS/RHEL पर सेवाओं और स्क्रिप्ट स्टार्टअप को कैसे प्रबंधित करें?

आप इस कमांड का उपयोग करके यूनिट फाइलों की सूची प्राप्त कर सकते हैं:

systemctl list-unit-files

यह आदेश सभी उपलब्ध यूनिट फाइलों को प्रदर्शित करेगा

सक्रिय सेवाओं और उनके राज्यों की सूची प्रदर्शित करने के लिए, यह आदेश चलाएँ:

# systemctl list-units -t service

चूंकि स्टार्टअप के बाद कुछ इकाइयां निष्क्रिय हो सकती हैं, आप —सभी . का उपयोग करके पूरी सूची प्राप्त कर सकते हैं विकल्प।

# systemctl list-units --all

<पूर्व>यूनिट लोड सक्रिय उप विवरण खरीद-sys-fs-binfmt_misc.automount सक्रिय प्रतीक्षा लोड किया गया ~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ एक्जिम.सेवा निष्क्रिय मृत नहीं मिला exim.servicefirewalld.service लोडेड एक्टिव रनिंग फायरवॉल - डायनेमिक फ़ायरवॉल daemongetty@tty1.service लोडेड एक्टिव रनिंग गेटी ऑन tty1● iptables.service not-found inactive dead iptables.service नेटवर्किंग ऊपर/नीचे लाना● NetworkManager-wait-online.service not-found निष्क्रिय मृत

जैसा कि आप सूची से देख सकते हैं, यहां तक ​​कि डिस्क पर न मिलने वाली सेवाओं को भी प्रदर्शित किया जाता है।

इसके अलावा, आप कुछ अन्य झंडों का उपयोग कर सकते हैं, उदाहरण के लिए:

  • —राज्य — डेमॉन स्थिति का पता लगाने के लिए उपयोग किया जाता है:लोड, सक्रिय, उप
  • —टाइप करें — इकाइयों को प्रकार के अनुसार फ़िल्टर करने की अनुमति देता है

उदाहरण:

systemctl list-units --all --state=active —केवल सक्रिय सिस्टमड इकाइयों की सूची प्रदर्शित करें

systemctl list-units —type=service — उन इकाइयों की सूची प्रदर्शित करें जो सेवाएं हैं

CentOS/RHEL पर सेवाओं और स्क्रिप्ट स्टार्टअप को कैसे प्रबंधित करें?

Systemd में सर्विस कैसे बनाएं?

सेवाओं का प्रबंधन करने के लिए, सिस्टमड एक विशेष सिंटैक्स का उपयोग कर रहा है। आपको .सेवा add जोड़ना होगा एक सेवा के नाम के बाद। उदाहरण के लिए:

# systemctl enable nginx.service - कमांड nginx वेब सर्वर को स्टार्टअप में जोड़ता है

यह कमांड systemd . में सर्विस कमांड में निर्दिष्ट फाइल के लिए एक प्रतीकात्मक लिंक बनाएगा स्टार्टअप निर्देशिका।

# systemctl enable nginx.service

 /etc/systemd/system/multi-user.target.wants/nginx.service से /usr/lib/systemd/system/nginx.service तक सिमलिंक बनाया गया
कमांड का आउटपुट उस डायरेक्टरी को दिखाता है, जिसमें सर्विस फाइल का सिमलिंक बनाया गया है।

यह जांचने के लिए कि क्या किसी सेवा को स्टार्टअप में जोड़ा गया है, आप उसकी स्थिति प्राप्त कर सकते हैं:

systemctl status nginx.service

आउटपुट में निम्न पंक्ति पर ध्यान दें:

लोडेड:लोडेड (/usr/lib/systemd/system/nginx.service; सक्षम; विक्रेता प्रीसेट:अक्षम)

सक्षम value का अर्थ है कि यह सेवा Linux स्टार्टअप में जोड़ी गई है। यदि सेवा स्वचालित रूप से प्रारंभ नहीं होती है, तो आप अक्षम देखेंगे यहाँ।

Systemd में किसी सेवा को अक्षम कैसे करें?

आप किसी सेवा को स्टार्टअप से हटा सकते हैं ताकि यह Linux बूट पर प्रारंभ न हो (जबकि सेवा स्वयं हटाई नहीं गई है)। सेवा के स्टार्टअप को अक्षम करने के लिए, निम्न आदेश चलाएँ:

# systemctl disable your_service

उदाहरण के लिए, nginx ऑटोस्टार्टअप को अक्षम करने के लिए:

# systemctl disable nginx.service

हटाया गया सिमलिंक /etc/systemd/system/multi-user.target.wants/nginx.service

ऐसा करने के बाद, एक सर्विस फाइल का सिमलिंक सिस्टमड डायरेक्टरी से हटा दिया जाएगा। आप यह सुनिश्चित कर सकते हैं कि सेवा स्वचालित रूप से प्रारंभ हो गई है:

# systemctl is-enabled nginx

सिस्टमड के साथ यूनिट्स को कैसे मास्क करें?

मुझे कुछ दुष्ट सेवाओं का सामना करना पड़ा है जो अभी भी स्टार्टअप में उन्हें अक्षम करने के बाद बनी हुई हैं और लिनक्स रीबूट के बाद शुरू हुई हैं। इस समस्या को हल करने के लिए, आप एक सेवा को मास्क कर सकते हैं:

# systemctl mask nginx.service

फिर यह या तो मैन्युअल रूप से या OS के पुनरारंभ होने के बाद प्रारंभ नहीं होगा:

# systemctl mask nginx.service

 /etc/systemd/system/nginx.service से /dev/null में सिमलिंक बनाया गया।

# service nginx restart

/bin/systemctl पर पुनर्निर्देशित करना nginx.service को पुनरारंभ करना nginx.service को पुनरारंभ करने में विफल:इकाई नकाबपोश है।

आप इस आदेश का उपयोग करके किसी सेवा को अनमास्क कर सकते हैं:

# systemctl unmask nginx.service

हटाया गया सिमलिंक /etc/systemd/system/nginx.service.

यदि किसी सेवा को मास्क करने के बाद आप अपनी यूनिट फाइलों की जांच करते हैं, तो आप देखेंगे कि सेवा को मास्केड के रूप में चिह्नित किया गया है :

CentOS/RHEL पर सेवाओं और स्क्रिप्ट स्टार्टअप को कैसे प्रबंधित करें?

Rc.local के साथ स्क्रिप्ट या सेवा चलाएँ

Linux बूट पर विभिन्न स्क्रिप्ट चलाने के लिए, rc.local अक्सर प्रयोग किया जाता है।

स्क्रिप्ट के अलावा, rc.local . का उपयोग करके आप सेवाओं को भी चला सकते हैं, यहां तक ​​कि वे भी जो systemd . का उपयोग करना शुरू कर चुके हैं . मुझे नहीं पता कि सिस्टमड होने पर आपको rc.local का उपयोग क्यों करना चाहिए, लेकिन यहां कुछ उदाहरण दिए गए हैं।

सबसे पहले, /etc/rc.local निष्पादन योग्य होना चाहिए:

chmod +x /etc/rc.local

Rc.local को systemd ऑटोस्टार्ट में जोड़ा जाना चाहिए:

systemctl enable rc-local

और हम nginx . शुरू करने के लिए एक कमांड जोड़ सकते हैं वेब सर्वर से rc.local :

service nginx start

CentOS/RHEL पर सेवाओं और स्क्रिप्ट स्टार्टअप को कैसे प्रबंधित करें?

लेकिन मैं शायद ही कभी rc.local . का उपयोग करता हूं सेवाएं शुरू करने के लिए। अधिक बार rc.local का उपयोग स्क्रिप्ट शुरू करने या एक बार कमांड चलाने के लिए किया जाता है।

उदाहरण के लिए, मैंने एक स्क्रिप्ट बनाई है /root/test.sh यह कुछ करता है और मैं इसे बूट के ठीक बाद चलाना चाहता हूं। निम्न पंक्ति को rc.local फ़ाइल में जोड़ें:

sh /root/test.sh

CentOS/RHEL पर सेवाओं और स्क्रिप्ट स्टार्टअप को कैसे प्रबंधित करें?

CentOS 7 से शुरू होकर, डेवलपर्स बताते हैं कि rc.local एक अप्रचलित डेमॉन है और स्क्रिप्ट या सेवाओं को शुरू करने के लिए इसका उपयोग करने की अनुशंसा नहीं की जाती है। लेकिन मैं इसका उपयोग तब करता हूं जब यह अभी भी काम कर रहा है क्योंकि यह बहुत आसान है।

Systemd के साथ Linux सेवा कैसे बनाएं?

आप अपना खुद का डेमॉन बना सकते हैं और इसे systemd. . के माध्यम से प्रबंधित कर सकते हैं

उदाहरण के लिए, आप वही स्क्रिप्ट शुरू करना चाहते हैं (/root/test.sh ) हर बार सिस्टम को रीबूट किया जाता है। आइए अपनी नई सेवा की फ़ाइल बनाने के साथ शुरुआत करें:

touch /etc/systemd/system/test-script.service
chmod 664 /etc/systemd/system/test-script.service
nano /etc/systemd/system/test-script.service

यहाँ फ़ाइल की सामग्री है:

[इकाई]विवरण=टेम्प्लेट सेटिंग्स सर्विसआफ्टर=network.target[Service]Type=oneshotUser=rootExecStart=/root/test.sh[Install]WantedBy=multi-user.target

मुख्य पैरामीटर हैं:

User - एक उपयोगकर्ता खाता जिससे डेमॉन शुरू हुआ है

Type=oneshot — सिस्टमड को अन्य इकाइयों के साथ जारी रखने से पहले प्रक्रिया के समाप्त होने की प्रतीक्षा करनी चाहिए

इसे जांचें और फिर से शुरू करें:
# systemctl daemon-reload
# systemctl start test-script.service
# systemctl status test-script.service

● test-script.service - टेस्टलोडेड:लोडेड (/etc/systemd/system/test-script.service; अक्षम; विक्रेता प्रीसेट:अक्षम) सक्रिय:सक्रिय (चल रहा है)

अगर सेवा अच्छी तरह से काम करती है, तो इसे सिस्टमड स्टार्टअप में जोड़ें:

# systemctl enable test-script.service

 /etc/systemd/system/multi-user.target.wants/test-script.service से /etc/systemd/system/test-script.service तक सिमलिंक बनाया गया।

इस प्रकार, आप किसी भी स्क्रिप्ट को ऑटोस्टार्ट में जोड़ सकते हैं और उन्हें सिस्टमड के माध्यम से प्रबंधित कर सकते हैं।

क्रॉन का उपयोग करके स्क्रिप्ट कैसे चलाएं?

यदि आप किसी स्क्रिप्ट या कमांड को कुछ आवृत्ति पर चलाना चाहते हैं, तो आप cron . का उपयोग कर सकते हैं :

crontab -e — क्रॉन टास्क टेबल बदलने के लिए एडिटर खोलता है

और एक कार्य जोड़ें जो आप यहां चाहते हैं, उदाहरण के लिए:

* * * * * /root/test.sh — एक मिनट में एक बार स्क्रिप्ट चलाने के लिए।

आप एक घड़ी-कुत्ता write लिख सकते हैं स्क्रिप्ट जो सेवा की स्थिति की जांच करेगी, और यदि सेवा नहीं चल रही है, तो स्क्रिप्ट इसे शुरू कर देगी। मैं अपने कुछ प्रोजेक्ट में इसी तरह का उपयोग कर रहा हूं।

क्रॉन में सभी कार्यों की सूची प्रदर्शित करने के लिए, कमांड चलाएँ:

# crontab -l

* * * * * /root/test.sh

क्रोन कार्यों को क्रम में चलाने के लिए उपलब्ध समय मान:

  • मिनट:0-59
  • घंटे:0-59
  • महीने का दिन:1-31
  • महीना:1-12
  • सप्ताह का दिन:0-7 (0 या 7 रविवार है)

हमारे कार्य में, स्क्रिप्ट एक मिनट में एक बार चलती है, इसलिए वहां *तारांकन* होते हैं।

आप स्क्रिप्ट को cron . में से किसी एक में भी रख सकते हैं निर्देशिका:

  • /cron.daily - दिन में एक बार चलने वाली स्क्रिप्ट के लिए
  • /cron.hourly - एक घंटे में एक बार चलने वाली स्क्रिप्ट के लिए
  • /cron.monthly — महीने में एक बार चलने वाली स्क्रिप्ट के लिए
  • /cron.weekly — सप्ताह में एक बार चलने वाली स्क्रिप्ट के लिए

निर्दिष्ट निर्देशिकाओं में स्क्रिप्ट स्वचालित शेड्यूल के अनुसार चलाई जाएंगी।

बैश स्टार्टअप स्क्रिप्ट:.bashrc

यदि आप SSH . को प्रारंभ करते समय कुछ कार्य करना चाहते हैं कंसोल, आप .bash_profile . में कोई भी कमांड या स्क्रिप्ट जोड़ सकते हैं या .bashrc फ़ाइल। सिद्धांत रूप में, आप इनमें से किसी भी फाइल में कार्रवाई जोड़ सकते हैं, यह किसी भी स्थिति में चलाया जाएगा। आमतौर पर, आपको जिन चीज़ों की ज़रूरत होती है, उन्हें .bashrc में जोड़ा जाता है, और .bashrc को .bash_profile से शुरू किया जाता है।

मैंने .bashrc फ़ाइल में nginx वेब सेवा को पुनरारंभ करने के लिए एक कमांड जोड़ा:

service nginx restart

CentOS/RHEL पर सेवाओं और स्क्रिप्ट स्टार्टअप को कैसे प्रबंधित करें?

फिर मैंने फ़ाइल को सहेजा और SSH सत्र फिर से शुरू किया:

CentOS/RHEL पर सेवाओं और स्क्रिप्ट स्टार्टअप को कैसे प्रबंधित करें?

जैसा कि आप देख सकते हैं, टर्मिनल शुरू करते समय, वेबसर्वर को भी पुनरारंभ किया गया है। टर्मिनल शुरू करते समय क्या क्रियाएं की जा सकती हैं? यह कुछ अतिरिक्त उपकरण हो सकते हैं, जैसे अपटाइम सर्वर जांच:

CentOS/RHEL पर सेवाओं और स्क्रिप्ट स्टार्टअप को कैसे प्रबंधित करें?

या यदि आप विशिष्ट निर्देशिका में जाना चाहते हैं और mc . शुरू करना चाहते हैं ssh कंसोल चलाते समय, निम्नलिखित को .bashrc . में जोड़ें :

cd /var/
mc

CentOS/RHEL पर सेवाओं और स्क्रिप्ट स्टार्टअप को कैसे प्रबंधित करें?

उम्मीद है, लिनक्स में लिनक्स सेवा या स्क्रिप्ट स्टार्टअप को कैसे प्रबंधित किया जाए, इस बारे में यह लेख आपके लिए मददगार रहा है (यह लेख सेंटोस और आरएचईएल के लिए लिखा गया था, लेकिन अन्य डिस्ट्रो के लिए उपयुक्त)। मुझे विश्वास है कि यह जानकारी उन लोगों के लिए उपयोगी होगी जो Linux सिस्टम प्रशासन की मूल बातें पढ़ रहे हैं।


  1. 'सेवा नियंत्रण प्रबंधक त्रुटि 7001' को कैसे ठीक करें

    कुछ विंडोज़ उपयोगकर्ताओं ने एक नई ईवेंट व्यूअर आईडी (सेवा नियंत्रण प्रबंधक – त्रुटि 7001) की खोज की है  एक अप्रत्याशित सिस्टम क्रैश के बाद। यह समस्या Windows 7, Windows 8.1 और Windows 10 पर होने की पुष्टि की गई है। जैसा कि यह पता चला है, कई अलग-अलग सामान्य अपराधी हैं जो इस विशेष मुद्दे की स्पष्टता

  1. स्टार्टअप प्रोग्राम को प्रबंधित करने के लिए ERD कमांडर ऑटोरन का उपयोग कैसे करें

    पिछले दिनों में, सॉफ़्टवेयर स्टार्ट मेनू में स्टार्टअप फ़ोल्डर में एक प्रविष्टि जोड़कर या रजिस्ट्री में रन कुंजी में एक मान जोड़कर अपने आप शुरू हो जाता था। कुछ डरपोक क्रैपवेयर कंपनियों ने यह पता लगाना शुरू कर दिया कि ब्राउज़र सहायक वस्तुओं, सेवाओं के शेड्यूल किए गए कार्यों और यहां तक ​​कि छवियों के

  1. Windows 10 में स्टार्टअप प्रोग्राम कैसे प्रबंधित करें

    विंडोज 10 तेज और उत्तरदायी ऑपरेटिंग सिस्टम है, हालांकि, यदि आपके पास दर्जनों एप्लिकेशन और सेवाएं हैं जो आपके कंप्यूटर को शुरू करते समय लॉन्च करने के लिए सेट हैं, तो यह निश्चित रूप से बूट प्रक्रिया को रोक सकता है। हालांकि अधिकांश समय वे सौम्य और उपयोगी होते हैं लेकिन साथ ही ये ऑटो-स्टार्ट प्रोग्राम स