प्रभावी होने के लिए नाम बदलने के लिए रिबूट की आवश्यकता के बिना लिनक्स होस्ट का नाम कैसे बदलूं?


26

मैंने सर्वरफॉल्ट पर इस प्रश्न के उत्तर की खोज की और इसे नहीं पाया। मुझे पता है कि यह संभव है, लेकिन मुझे याद नहीं है कि यह कैसे करना है। मैं लिनक्स होस्ट के होस्टनाम को कैसे बदलूं और रिबूट के बिना प्रभावी होने के लिए उस परिवर्तन को प्राप्त करूं?

मैं Ubuntu 16 और Ubuntu 18 का उपयोग कर रहा हूं।

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

मुझे पता है कि होस्ट का नाम बदलने के लिए, मैं फ़ाइलों को संपादित करता हूं:

  • /etc/hostname
  • /etc/hosts

में /etc/hostnameएक बस वर्तमान होस्ट नाम की जगह नए होस्ट नाम के साथ (जल्द ही पूर्व होस्ट नाम होना करने के लिए)।

/etc/hostsफ़ाइल में उबंटू की लाइन है:

127.0.1.1 your-hostname your-hostname

यह बूटस्ट्रैपिंग के रूप में कार्य करता है, जबकि आपका मेजबान बूट कर रहा है और अपने नेटवर्क में खुद को स्थापित कर रहा है। होस्टनाम बदलने से पहले, your-hostnameवर्तमान है (जल्द ही पूर्व होस्टनाम होने वाला है) और अपने होस्ट के होस्टनाम को बदलने के हिस्से के रूप में, एक उस नाम को नए नाम से बदल देता है।

मैं जिस चीज से परिचित हूं वह उपरोक्त दो चरणों को निष्पादित कर रहा है और फिर आपके मेजबान को रिबूट कर रहा है। लेकिन बहुत बार, एक प्रोडक्शन सर्वर के साथ, कोई उस नाम को निष्पादित करना चाहेगा, लेकिन किसी के होस्ट को रिबूट नहीं करेगा।

मैं एक होस्ट पर hostname कैसे बदल सकता हूं और होस्ट को रिबूट किए बिना प्रभावी होने के लिए उस परिवर्तन को प्राप्त कर सकता हूं?


1
"उबंटू 16" और "उबंटू 18" जैसी कोई चीज नहीं है, 16.04 और 16.10 के बीच बड़े अंतर हो सकते हैं क्योंकि 16.10 और 17.04 के बीच हैं।
पाइप

जवाबों:


49

आप hostnamectlटूल का उपयोग करके सिस्टम-आधारित सिस्टम पर होस्टनाम के कर्नेल के विचार को बदल सकते हैं । उदाहरण के लिए:

hostnamectl set-hostname whatever

आप सिस्टम के होस्टनाम के वर्तमान विचार को इसके साथ देख सकते हैं:

hostnamectl             # equivalent to hostnamectl status

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


1
क्या मुझे अपने सर्वर पर नेटवर्किंग को फिर से शुरू करने की आवश्यकता है अगर मैं नाम बदलने के बाद इसे रिबूट नहीं करना चाहता हूं? मैंने यह पाया: sudo /etc/init.d/network restart इसके अलावा, उस सर्वर के माध्यम से मेरे सर्वर पर नेटवर्किंग को फिर से शुरू करना, किसी भी चलने वाली प्रक्रिया को फिर से शुरू करने के बारे में आपकी बात जो सर्वर का नाम जानने के लिए मान्य है। सहमत हैं कि मेजबान को फिर से शुरू करने से ठीक हो जाएगा। उस ने कहा, ऐसे समय हैं जब मैं वास्तव में एक मेजबान का नाम बदलना चाहता हूं, लेकिन वास्तव में इसे रिबूट नहीं करना चाहता। sudo /etc/init.d/network restartनए होस्टनाम को रिबूट करने के लिए प्रभावी होने के बारे में कोई राय और इसकी उपयोगिता?
पीटर जिराक एल्ड्रिच

3
@PeterJirak: पूरी तरह से बेकार। यदि वे प्रोग्राम (जिन्हें होस्टनाम जानने की आवश्यकता है) पहले होस्टनाम अपडेट देखने की जहमत नहीं उठाते हैं, तो वे अब परेशान नहीं होंगे। Eth0 पर IP पतों को फिर से कॉन्फ़िगर करने के लिए सिस्टम को बताने से उस पर थोड़ा भी असर नहीं पड़ेगा।
ग्रैविटी

@PeterJirak "प्रभावी होने के लिए नया होस्टनाम प्राप्त करने" से आपका क्या मतलब है? जैसा कि पहले चर्चा की गई थी, यह तुरंत प्रभावी हो जाता है, और किसी भी नई प्रक्रिया की जानकारी होगी। मुझे यह भी समझ में नहीं आ रहा है कि आप नेटवर्क को फिर से शुरू करने के बारे में क्यों पूछ रहे हैं? होस्टनाम के साथ क्या करना है?
माइकल हैम्पटन

5
यह एक सामान्य गलत धारणा है कि "नेटवर्किंग" की संपूर्णता एक उपयोगकर्ता सेवा है जिसे फिर से शुरू किया जा सकता है, सिर्फ इसलिए कि एक /etc/init.d स्क्रिप्ट है जिसका नाम ऐसा है।
ग्रैविटी

2
@PeterJirak एक साइड नोट के रूप में, /etc/init.dसिस्टम में रनिंग सिस्टम सिस्टम पर गलत तरीका है। यह पुराने सिस्टम वी के लिए पिछड़े संगतता के लिए बस है।
rexkogitans

22

आप इन-कर्नेल होस्टनाम का उपयोग करके बदल सकते हैं:

hostname NEWNAME

लिनक्स पर यह व्यावहारिक रूप से निम्नलिखित में से एक के बराबर है:

sysctl kernel.hostname=NEWNAME

echo NEWNAME > /proc/sys/kernel/hostname

यह सिस्टमड पर निर्भर नहीं करता है ( होस्टनामेक्टल के विपरीत जिसे सिस्टमड-होस्टनाम की आवश्यकता होती है) या किसी अन्य गैर-मानक उपकरण, और अक्सर (विशेष रूप से शेलस्क्रिप्ट-इनिट सिस्टम में) यह है कि शुरुआती होस्टनाम को पहले स्थान पर कैसे सेट किया गया था।

अधिकांश कार्यक्रम और सेवाएँ वास्तव में hostname का उपयोग नहीं करते हैं ; कुछ जो करते हैं (जैसे कि पोस्टफ़िक्स या कर्बेरोस का उपयोग करने वाली सेवाएँ) को एक-एक करके फिर से शुरू किया जा सकता है।

(कुछ प्रोग्राम होस्टनाम को पुनः आरंभ करने तक कैश करते हैं, अन्य लोग हर बार इसकी आवश्यकता होने पर क्वेरी करते हैं। प्रोग्राम में परिवर्तन सूचनाओं को प्राप्त करने के लिए (2) / proc / sys / कर्नेल / होस्टनाम को पोल करने की क्षमता भी होती है, लेकिन कुछ ही करते हैं।


2
ध्यान रखें कि ये तरीके लगातार नहीं हैं और रिबूट से नहीं बचेंगे।
माइकल हैम्पटन

3
सौभाग्य से, ओपी ने पहले से ही अपने प्रश्न में दृढ़ता को कवर किया है।
ग्रिटिटी

1
पोस्टफ़िक्स होस्ट नाम कठिन में एक या दो स्थानों में कोडित हो सकता है /etc/postfix/main.cfऔर /etc/mailnameइसलिए उन संपादित करने के लिए, भी आवश्यकता होगी,।
मार्क प्लॉटनिक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.