सभी सेवाओं को अक्षम करें, सिवाय ssh के


31

मैं आधुनिक (सिस्टम आधारित) लिनक्स वितरण पर ssh को छोड़कर सभी सेवाओं को कैसे निष्क्रिय कर सकता हूं?

मुझे एक रखरखाव मोड को लागू करने की आवश्यकता है

इन सभी सेवाओं को नीचे करने की आवश्यकता है:

  • postgres
  • पोस्टफ़िक्स
  • अमरीका की एक मूल जनजाति
  • कप
  • क्रॉन
  • दरबा

लेकिन ssh को बंद नहीं किया जाना चाहिए, क्योंकि यह रखरखाव मोड के दौरान कार्यों को करने के लिए उपयोग किया जाता है।

बेशक मैं एक शेल स्क्रिप्ट लिख सकता था जो उन सेवाओं की एक सूची पर लूप करता है जिन्हें मैं अक्षम करना चाहता हूं। लेकिन ऐसा लगता है कि मैं किसी ऐसी चीज़ पर लगाम लगा रहा हूं जो पहले से मौजूद है, लेकिन जिसे मैं अब तक नहीं जानता।


1
किस प्रकार के कार्य? आप इसकी आवश्यकता क्यों है?
13

@ user430214 मैंने सवाल अपडेट किया। मैंने कहा: निश्चित रूप से मैं एक शेल स्क्रिप्ट लिख सकता हूं जो उन सेवाओं की एक सूची से अधिक है जो मैं अक्षम करना चाहता हूं। लेकिन ऐसा लगता है कि मैं किसी ऐसी चीज़ पर लगाम लगा रहा हूं जो पहले से मौजूद है, लेकिन जिसे मैं अब तक नहीं जानता।
गुत्थी

जवाबों:


55

इस तरह एक बहुत लग रहा है रनलेवलों , के साथ प्रतिस्थापित लक्ष्य systemd में। इसलिए, ऐसी स्क्रिप्ट लिखने के बजाय, जो सेवाओं की सूची को शुरू और बंद कर देती है, आप maintenance.targetकेवल एसएसएच जैसी आवश्यक सेवाओं के साथ एक नया बना सकते हैं । बेशक, एसएसएच नेटवर्किंग के बिना काफी उपयोगी नहीं है, इसलिए इस उदाहरण emergency-net.targetमें एसएसएच को शामिल करने के लिए एक सरल संशोधित किया गया है।

[Unit]
Description=Maintenance Mode with Networking and SSH
Requires=maintenance.target systemd-networkd.service sshd.service
After=maintenance.target systemd-networkd.service sshd.service
AllowIsolate=yes

फिर, आप अपने रखरखाव मोड का उपयोग करके प्रवेश कर सकते हैं

# systemctl isolate maintenance.target

और वापस

# systemctl isolate multi-user.target

1
इस उत्तर के लिए आपका बहुत-बहुत धन्यवाद। यह मुझे दिखाता है कि पूछना उपयोगी है, भले ही आपको लगता है कि एक गंदा शेल स्क्रिप्ट लिखने के अलावा कोई अच्छा जवाब नहीं है। आपातकालीन-
net.target

यह निश्चित रूप से है, क्योंकि यह सभी निर्भरताओं का भी ध्यान रखता है, और जब भी आप एक नई सेवा स्थापित करते हैं, तो आपको अपनी स्क्रिप्ट को अपडेट करने की आवश्यकता नहीं होती है।
एसा जोकिनेन

3

पहले अपनी सेवाओं को सूचीबद्ध करें और उनके संबंधित सिस्टमड-नामों की खोज करें।

फिर एक सूची बनाएं और रखरखाव में प्रवेश करने के लिए प्रत्येक सूची सदस्य को रोकें, रखरखाव के बाद प्रत्येक सदस्य को शुरू करें।


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