मैं पुनरारंभ के बिना होस्टनाम कैसे बदलूं?


497

मैं OS होस्टनाम बदलना चाहता हूं लेकिन मैं पुनरारंभ नहीं करना चाहता।

मैंने संपादित किया है, /etc/hostnameलेकिन इसे लागू करने के लिए पुनरारंभ की आवश्यकता है। इससे कैसे बचा जाए?


3
चेतावनी: Ubuntu 18+ के साथ काम नहीं करेगा, जो डिफ़ॉल्ट रूप से क्लाउड-इनिट चल रहा है, जो बूट पर होस्टनाम को नियंत्रित करता है।
nslntmnx

@nslntmnx, धन्यवाद!
एमआईबी

जवाबों:


642

यह आसान है। बस गियर आइकन (स्क्रीन के ऊपरी दाएं कोने पर स्थित) पर क्लिक करें, "इस कंप्यूटर के बारे में" स्क्रीन (गियर आइकन पर स्थित) खोलें और "डिवाइस का नाम" संपादित करें।

या, किसी टर्मिनल में, निम्न कमांड का उपयोग करें:

sudo hostname your-new-name

यह होस्टनाम को आपके नए-नाम पर तब तक सेट करेगा जब तक आप पुनः आरंभ नहीं करते। देखें man hostnameऔर मैं कंप्यूटर का नाम कैसे बदलूं? अधिक जानकारी के लिए। _अपने नाम का उपयोग न करें ।

ध्यान दें

पुनरारंभ होने के बाद आपके परिवर्तनों का /etc/hostnameउपयोग किया जाएगा, इसलिए (जैसा कि आपने प्रश्न में कहा था), आपको अभी भी उपयोग करना चाहिए

sudo -H gedit /etc/hostname

(या कुछ अन्य संपादक) ताकि फ़ाइल में hostname शामिल हो।

यह जाँचने के लिए कि फ़ाइल सही तरीके से सेट है, चलाएँ:

sudo service hostname start

आपको /etc/hostsउस पंक्ति को भी बदलना और बदलना चाहिए जो पढ़ती है:

127.0.1.1     your-old-hostname

ताकि अब इसमें आपका नया होस्टनाम शामिल हो। (यह आवश्यक है अन्यथा कई आदेश कार्य करना बंद कर देंगे।)


4
मैं पुनः आरंभ नहीं करना चाहता
दीपक राजपूत

23
मुझे पता है। इसलिए आपको 'hostname' कमांड का उपयोग करना चाहिए। मैं केवल यह स्पष्ट करना चाहता था, कि 'hostname' कमांड केवल होस्टनाम को तब तक बदलता है जब तक आप पुनः आरंभ / क्रैश / आदि नहीं करते। बाद में यह फाइल से फिर से नाम पढ़ेगा।
जस्पेरैडो

5
निर्भर करता है। यदि आपने कमांड दर्ज किया है तो आपको पुनरारंभ करने की आवश्यकता नहीं है। होस्टनाम पहले ही बदल दिया गया है। लेकिन केवल अपना अगला पुनरारंभ UNTIL करें।
जसपरेडो

19
ध्यान दें कि आपको भी बदलना होगा /etc/hosts(अन्य उत्तर देखें)
जेबी।

9
संक्षेप में, हालांकि hostnameनया नाम तत्काल प्रभाव लेने का कारण होगा, यह "स्थायी" नहीं है जब तक कि आप भी नहीं बदलते हैं /etc/hostnameऔर /etc/hosts, क्योंकि वे फाइलें हैं जो पुनरारंभ या क्रैश के बाद पढ़ी जाएंगी, बेशक, आप नहीं हो सकते हैं समय से पहले उम्मीद करना।
टिम पैरेंटी

280

उबंटू 13.04 आगे

hostnamectlआदेश दोनों डेस्कटॉप और सर्वर संस्करणों पर डिफ़ॉल्ट स्थापना का हिस्सा है।

यह hostnameकमांड और एडिटिंग के माध्यम से होस्टनाम सेट करता है /etc/hostname। स्थैतिक होस्टनाम सेट करने के साथ ही, यह "सुंदर" होस्टनाम सेट कर सकता है, जिसका उपयोग उबंटू में नहीं किया जाता है। दुर्भाग्य से, संपादन /etc/hostsअभी भी अलग से किया जाना है।

hostnamectl set-hostname new-hostname

यह कमांड systemd-servicesपैकेज का हिस्सा है (जो कि Ubuntu 14.04 के रूप में, इसमें timedatectlऔर localectlकमांड भी शामिल हैं )। जैसे ही उबंटू माइग्रेट करता है systemd, यह टूल भविष्य है।


1
ध्यान दें कि यह हर जगह उपलब्ध नहीं है। बस मेरे Ubuntu 14.04 LTS ARM-7 इंस्टॉलेशन को देखा, और hostnamectlमौजूद नहीं है। लगता है कि उबंटू के कुछ स्वाद अभी तक सिस्टमड का उपयोग नहीं कर रहे हैं।
स्टीफन

1
@ स्टीफन कमांड सिस्टम सूट का हिस्सा हैं, लेकिन वे स्वतंत्र रूप से उपलब्ध हैं। इस स्थिति में, 13.04-14.10 कमांड के उपलब्ध होने पर सिस्टमड को इनिट के रूप में उपयोग नहीं करता है।
मुरु जुएल

1
@ H2ONaCl शेल चर स्टार्टअप पर सेट है, बस एक और शेल खोलें और होस्टनाम चर ठीक होना चाहिए। सुडो के लिए, होस्टनाम रिज़ॉल्यूशन के बारे में त्रुटि ने मुझे वास्तव में कुछ भी करने से नहीं रोका।
मुरु

1
@ H2ONaCl आह, लेकिन HOSTNAME चरबल मानक नहीं है - IIRC पानी का छींटा और ksh यह नहीं है, zsh HOST का उपयोग करता है, इसलिए जहां तक ​​शेल चर जाते हैं, यह ढेर के नीचे है।
मूरू

3
अभी भी उबंटू 18.04 एलटीएस में काम करता है।
लुका

63

रिस्टार्ट के बिना

पुनरारंभ के बिना ubuntu में hostname या कंप्यूटर का नाम बदलना

संपादित करें / etc / hostname और नए मूल्य में परिवर्तन,

nano /etc/hostname 

संपादित करें / आदि / होस्ट और अपने नए होस्टनाम के लिए पुरानी 127.0.1.1 लाइन बदलें

127.0.0.1   localhost
127.0.1.1   ubuntu.local    ubuntu   # change to your new hostname/fqdn

नोट : मैंने इसे एक फोरम> एडिट / etc / होस्ट्स पर पढ़ा है और पुरानी 127.0.1.1 लाइन को अपने नए होस्टनाम में बदल दिया है (यदि आप ऐसा नहीं करते हैं, तो आप अब sudo का उपयोग करने में सक्षम नहीं होंगे। यदि आप पहले से ही ऐसा कर चुके हैं। , ESC को ग्रब मेनू पर दबाएं, रिकवरी चुनें, और अपनी होस्ट फ़ाइल को सही सेटिंग्स में संपादित करें)

अब रिबूट के बाद, आपका होस्टनाम आपके द्वारा चुना गया नया होगा

रिबूट के बिना

रिबूट के बिना बदलने के लिए , आप संपादित करें / etc / hostname के बाद hostname.sh का उपयोग कर सकते हैं। जब तक आप नीचे दिए गए आदेश का पालन नहीं करते हैं, तब तक आपको अपने होस्ट नाम / etc / host (127.0.0.1 newhost oldhost) दोनों रखने होंगे:

sudo service hostname start

नोट : परिवर्तन को सक्रिय बनाने के लिए ऊपर दिए गए आदेश। इस फ़ाइल में सहेजा गया होस्टनाम (/ etc / hostname) सिस्टम रिबूट पर संरक्षित किया जाएगा (और उसी सेवा का उपयोग करके सेट किया जाएगा)।


Ubuntu 12.10 पर, अंतिम भाग निम्न त्रुटि संदेश के साथ काम नहीं करता है sudo: unable to resolve host old-hostname। उस भाग के लिए, @jesperado समाधान अच्छी तरह से काम करता है।
फ्रैडरिक ग्रॉशंस 10

3
यदि आप अपडेट नहीं करते हैं /etc/hosts, तो wकमांड, अपाचे, /sbin/rebootऔर बहुत कुछ सहित 12.04.2 LTS पर मूल बातें विफल होने लगती हैं । अद्यतन करने के लिए सुनिश्चित करें/etc/hosts
जोश

आप कस्टम होस्टनाम के 127.0.0.1लिए localhostऔर उसके 127.0.1.1लिए दोनों का संदर्भ लेते हैं। सही? फिर, अपने जवाब के अंत की ओर, एक रिबोट के बिना एक कार्रवाई के लिए , आप संदर्भ /etc/hostsऔर 127.0.0.1 newhost oldhost। तो, 127.0.1.1पते की कोई आवश्यकता नहीं है ?
निकोस एलेक्जेंड्रिस

1
मेरे लिए काम नहीं किया। मुझे sudo nano /etc/hostsप्रभावी होने के लिए बदलाव के लिए उपयोग करना था ; nano /etc/hosts
सूदो के

2
पुनरारंभ और रिबूट के बीच क्या अंतर है?
तूफान

43

डिफ़ॉल्ट नाम तब सेट किया गया था जब आप उबंटू स्थापित कर रहे थे। आप मेजबानों और सर्वरों में मेजबानों और होस्टनाम फ़ाइलों को संपादित करके इसे आसानी से बदल सकते हैं। नीचे बताया गया है:

  1. CtrlAlttटर्मिनल खोलने के लिए कीबोर्ड पर प्रेस करें । जब यह खुलता है, तो नीचे कमांड चलाएँ:sudo hostname NEW_NAME_HERE

यह अगली रिबूट तक होस्टनाम को बदल देगा। परिवर्तन आपके वर्तमान टर्मिनल में तुरंत दिखाई नहीं देगा। नया होस्टनाम देखने के लिए एक नया टर्मिनल शुरू करें।

  1. नाम को स्थायी रूप से बदलने के लिए, होस्ट फ़ाइलों को संपादित करने के लिए कमांड चलाएँ:

    sudo -H gedit /etc/hostname तथा sudo -H gedit /etc/hosts

GUI के बिना Ubuntu सर्वर के लिए, चलाएं sudo vi /etc/hostnameऔर sudo vi /etc/hostsउन्हें एक-एक करके संपादित करें। दोनों फ़ाइलों में, आप जो चाहते हैं उसका नाम बदलें और उन्हें सहेजें।

अंत में, परिवर्तनों को लागू करने के लिए अपने कंप्यूटर को पुनरारंभ करें।


16

यहां एक स्क्रिप्ट है जो होस्टनाम को निर्धारित तरीके से बदल देती है। यह सुनिश्चित करता है कि न केवल, sudoबल्कि X11 एप्लिकेशन भी बिना किसी रीस्टार्ट के काम करते रहें।

उपयोग: sudo ./change_hostname.sh new-hostname

#!/usr/bin/env bash
NEW_HOSTNAME=$1
echo $NEW_HOSTNAME > /proc/sys/kernel/hostname
sed -i 's/127.0.1.1.*/127.0.1.1\t'"$NEW_HOSTNAME"'/g' /etc/hosts
echo $NEW_HOSTNAME > /etc/hostname
service hostname start
su $SUDO_USER -c "xauth add $(xauth list | sed 's/^.*\//'"$NEW_HOSTNAME"'\//g' | awk 'NR==1 {sub($1,"\"&\""); print}')"

स्क्रिप्ट में आखिरी पंक्ति क्या करती su $SUDO_USER -c "xauth add $(xauth list | sed 's/^.*\//'"$NEW_HOSTNAME"'\//g' | awk 'NR==1 {sub($1,"\"&\""); print}')"है? बस उत्सुक।
Fr0zenFyr

4
@ Fr0zenFyr: यह एक मान्य X11 प्रमाणीकरण टोकन ( xauth list) लेता है और पुराने होस्टनाम को नए होस्टनाम ( sed) के साथ बदल देता है । फिर awkपहले तर्क के आसपास उद्धरण रखता है xauth addक्योंकि xauthइनपुट और आउटपुट प्रारूप सममित नहीं हैं।
लुकास

स्पष्टीकरण के लिए धन्यवाद। मैंने परिवर्तनों को प्रभावी करने के लिए हमेशा रिबूट किया था। +1
Fr0zenFyr

@trakz: दरअसल 127.abc जो भी संख्या है, वह सभी स्थानीय IETF RFC के अनुसार है। (ज्यादातर लोगों को यह पता नहीं है, लेकिन जैसा कि सबसे अधिक नहीं है, स्वीकृत को संपादित करें)
फेबी

14

बिना पुनरारंभ:

  1. में मेजबाननाम बदलें /etc/hostname
  2. /etc/hostsतदनुसार अद्यतन करें
  3. sudo sysctl kernel.hostname=mynew.local.host

के साथ अपने वर्तमान होस्टनाम की जाँच करें hostname -f


16.04, sysctl के साथ sudo: unable to resolve host oldname, sysctl: setting key "kernel.hostname": Read-only file system। हो सकता है क्योंकि Proxmox के अंदर एक CT है।
पाब्लो ए

14

क्लाउड-इनिट (उबंटू 18+) होस्टनाम दृढ़ता

क्लाउड-इनिट के आगमन के साथ, उपरोक्त होस्ट (जैसे hostnamectl, etc/hostnameआदि) तत्काल होस्टनाम परिवर्तन के लिए काम करते हैं - जो होस्टनाम की सेटिंग को नियंत्रित कर सकता है - कई अन्य चीजों के बीच। यदि क्लाउड-इनिट स्थापित है, तो यह रिबूट के बाद छड़ी नहीं करेगा। यदि आप रिबूट के बाद रहने के लिए परिवर्तन चाहते हैं, तो आपको क्लाउड-इनिट कॉन्फ़िगरेशन फ़ाइलों को संपादित करने की आवश्यकता होगी , क्लाउड-इनिट के होस्टनाम सेट / अपडेट मॉड्यूल को अक्षम करें :

sudo sed 's/preserve_hostname: false/preserve_hostname: true/' /etc/cloud/cloud.cfg

या क्लाउड-इनिट को पूरी तरह से अक्षम करें:

sudo touch /etc/cloud/cloud-init.disabled

1
कृपया इस उत्तर को बढ़ाएँ। यह मेरे लिए बहुत अच्छा काम किया। अन्य उत्तर क्लाउड-इनिट को अपनाने के साथ काम नहीं करते हैं।
nslntmnx

@nslntmnx क्या यह केवल सर्वर पर 18.04 डेस्कटॉप पर डिफ़ॉल्ट रूप से स्थापित होता है? डेस्कटॉप नहीं है /etc/cloud/cloud.cfg। पैकेज का नाम क्या है? बस cloud-init?
सिरो सेंटिल्ली 新疆 改造 i i 事件 '30

1
इसके अलावा, क्या इसके ओवरराइड को अक्षम करने के बजाय क्लाउड-इनिट के साथ होस्टनाम बदलने का कोई तरीका है?
सिरो सेंटिल्ली 新疆 i iro i 事件 '30

1
हाँ, आप क्लाउड-init का उपयोग कर कई सेटिंग्स बदल सकते हैं - यहाँ होस्ट नाम की स्थापना के लिए एक लिंक है - डॉक्स मेरा उत्तर में लिंक देखें: cloudinit.readthedocs.io/en/latest/topics/...
Pierz

7

अपना वर्तमान होस्टनाम प्राप्त करने के लिए:

cat /etc/hostname

इसे किसी भी टेक्स्ट एडिटर में बदला जा सकता है। आपको 127.0.0.1 / etc / मेजबानों के खिलाफ लोकलहोस्ट के अलावा अन्य एंट्री को भी अपडेट करना होगा।


1
या केवल कमांड लाइन से कमांड "होस्टनाम" चलाएं।
एलोमेज

4
  1. /etc/hostnameवांछित hostname के साथ सामग्री को बदलें (आप के साथ संपादित कर सकते हैं sudo nano /etc/hostname)
  2. में /etc/hosts, प्रविष्टि को 127.0 के बगल में बदलें। वांछित होस्टनाम के साथ 1 .1 (आप के साथ संपादित कर सकते हैं sudo nano /etc/hosts)
  3. निष्पादित sudo service hostname restart; sudo service networking restart

चेतावनी: Ubuntu 18+ के साथ काम नहीं करेगा, जो डिफ़ॉल्ट रूप से क्लाउड-इनिट चल रहा है, जो बूट पर होस्टनाम को नियंत्रित करता है।
nslntmnx

@nslntmnx क्या आप इस बारे में निश्चित हैं? मैं क्लाउड-कॉन्फ़िगरेशन में देखता # if you do nothing you'll end up with: # * /etc/hostname (and 'hostname') managed via: 'preserve_hostame: false' # if you do not change /etc/hostname, it will be updated with the cloud # provided hostname on each boot. If you make a change, then manual # maintenance takes over, and cloud-init will not modify it.हूं। वर्तमान में मेरे पास उबंटू 18 नहीं है इसलिए मैं सप्ताहांत तक इसका परीक्षण नहीं कर सकता।
जॉर्ज

4

उबंटू 16.04

यह बिना पुनरारंभ और बिना किसी टर्मिनल उपयोग के है।

  • सिस्टम सेटिंग्स पर जाएं -> विवरण
  • वो रहा। डिवाइस नाम के अलावा , एक टेक्स्ट-बॉक्स है।
  • टेक्स्ट-बॉक्स और क्लोज़ विंडो संपादित करें।

टर्मिनल खोलें। अपने लिए देखें।

(पुराने संस्करणों के लिए, टेक्स्ट-बॉक्स संपादन योग्य नहीं है।)


4

मूल पोस्टर के सवाल का शास्त्रीय जवाब यह है कि, एक बार जब आप संपादित कर लेते हैं /etc/hostname, तो आप इसे रूट के रूप में ( ) विकल्प के साथ होस्टनाम (1) चलाकर इसे फिर से शुरू करें।-F--file

sudo hostname -F /etc/hostname

होस्ट नाम (5) के साथ निपटने /etc/hostnameऔर कहा प्रोग्राम अब बीस साल के लिए डेबियन और उसके डेरिवेटिव में एक ही रहा है, और पैकेज उपलब्ध कराने के यह टैग किया गया है आवश्यक और आवश्यक है, और IIRC init स्क्रिप्ट सचमुच के लिए एक ही बात का इस्तेमाल किया है दशकों ( /etc/init/hostname.confअभी भी इसमें शामिल है), इसलिए मुझे कहना होगा कि मैं वास्तव में हैरान हूं कि किसी ने पहले ही इसका उल्लेख नहीं किया है :)


चेतावनी: Ubuntu 18+ के साथ काम नहीं करेगा, जो डिफ़ॉल्ट रूप से क्लाउड-इनिट चल रहा है, जो बूट पर होस्टनाम को नियंत्रित करता है।
nslntmnx

@nslntmnx erm, क्या? डिफ़ॉल्ट रूप से क्लाउड-इनिट में खींचने के लिए Ubuntu 18 ने कौन सी नई निर्भरता का परिचय दिया? आप कुछ क्लाउड-अनुकूलित छवियों के बारे में सोच रहे होंगे, जिस स्थिति में यह आश्चर्य की बात नहीं होनी चाहिए कि वे कस्टम क्लाउड प्रोविजनिंग टूल चलाते हैं।
जोसिप रोडिन

3
sudo hostname your-new-name
sudo /etc/init.d/networking restart

मुझे लगता है कि काम करना चाहिए


5
मुझे नहीं लगता कि यह एक पुनः आरंभ होने से बचेगा
कॉलिन एंडरसन

चेतावनी: Ubuntu 18+ के साथ काम नहीं करेगा, जो डिफ़ॉल्ट रूप से क्लाउड-इनिट चल रहा है, जो बूट पर होस्टनाम को नियंत्रित करता है।
nslntmnx

3

मैंने उत्तर पढ़ लिए हैं, लेकिन मुझे लगता है कि शायद आप इसके लिए देख रहे हैं:

/etc/hostnameफ़ाइल को संपादित करने के बाद बस इन दोनों कमांड को निष्पादित करें ।

$ sudo service hostname restart
$ exec bash

बस इतना ही। पुनरारंभ करने की कोई आवश्यकता नहीं है। यह भी सुनिश्चित करें कि आप /etc/hostsफ़ाइल में नाम भी बदलते हैं ।


कई अन्य उत्तरों के विपरीत, यह अपडेट नहीं होता है /etc/hosts(मैंने 14.04 पर पुष्टि की)।
आइजैक

चेतावनी: Ubuntu 18+ के साथ काम नहीं करेगा, जो डिफ़ॉल्ट रूप से क्लाउड-इनिट चल रहा है, जो बूट पर होस्टनाम को नियंत्रित करता है।
nslntmnx

2

उबंटू 16.04

DigitalOcean Comunity के उत्तर पर आधारित समाधान ।

होस्ट फ़ाइल संपादित करें ।

$ sudo nano /etc/hosts

पुराने नाम को नए के साथ बदलें ।

127.0.0.1 localhost newname

नया होस्टनाम सेटअप करें।

$ sudo hostnamectl set-hostname newname


चेतावनी: Ubuntu 18+ के साथ काम नहीं करेगा, जो डिफ़ॉल्ट रूप से क्लाउड-इनिट चल रहा है, जो बूट पर होस्टनाम को नियंत्रित करता है।
nslntmnx
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.