سؤال كيف يمكنني تغيير اسم المضيف دون إعادة تشغيل؟


أرغب في تغيير اسم مضيف OS ولكني لا أريد إعادة التشغيل.

لقد قمت بتحرير /etc/hostname لكنه يتطلب إعادة تشغيل لتنفيذها. كيف تتجنب هذا؟


456
2017-12-14 08:56


الأصل


تحذير: لن يعمل مع Ubuntu 18+ الذي يقوم بتشغيل cloud-init افتراضيا ، والذي يتحكم في اسم المضيف في التمهيد. - nslntmnx


الأجوبة:


من السهل. انقر فقط على رمز الترس (الموجود في الزاوية العلوية اليمنى من الشاشة) ، وافتح شاشة "حول هذا الكمبيوتر" (الموجودة على رمز الترس) وعدِّل "اسم الجهاز".

أو ، في الطرفية ، استخدم الأمر التالي:

sudo hostname your-new-name

سيؤدي هذا إلى تعيين اسم المضيف على اسمك الجديد حتى تعيد التشغيل. نرى man hostname و كيف أغير اسم الكمبيوتر؟ لمزيد من المعلومات. لا تستخدم _ في اسمك.

ملحوظة

بعد إعادة تشغيل التغييرات الخاصة بك في /etc/hostname سيتم استخدامها ، لذلك (كما قلت في السؤال) ، يجب عليك الاستمرار في استخدامها

sudo -H gedit /etc/hostname

(أو بعض المحرر الآخر) بحيث يحتوي الملف على اسم المضيف.

لاختبار أنه تم إعداد الملف بشكل صحيح ، قم بتشغيل:

sudo service hostname start

يجب عليك أيضا تحرير /etc/hosts وتغيير الخط الذي يقرأ:

127.0.1.1     your-old-hostname

بحيث يحتوي الآن على اسم المضيف الجديد الخاص بك. (هذا مطلوب إلا أن العديد من الأوامر ستتوقف عن العمل.)


593
2017-12-14 10:27



أنا لا أريد أن أعد تشغيل - Deepak Rajput
اعرف. هذا هو السبب في أنك يجب أن تستخدم أمر 'hostname'. أردت فقط توضيح ، أن الأمر 'hostname' لا يؤدي إلا إلى تغيير اسم المضيف حتى تقوم بإعادة تشغيل / تعطل / etc. بعد ذلك سوف يقرأ الاسم من الملف مرة أخرى. - jasperado
يعتمد على. إذا قمت بإدخال الأمر لا تحتاج إلى إعادة التشغيل. اسم المضيف يتغير بالفعل. ولكن فقط حتى اعادة تشغيلك المقبل. - jasperado
لاحظ أنه يجب عليك أيضًا تغيير /etc/hosts (انظر الإجابات الأخرى) - JB.
باختصار ، على الرغم من hostname سيتسبب في ظهور الاسم الجديد على الفور ، وليس "دائمًا" ما لم تتغير أيضًا /etc/hostname و /etc/hostsنظرًا لأن هذه هي الملفات التي سيتم قراءتها بعد إعادة التشغيل أو التعطل ، والتي بالطبع قد لا تتوقعها في وقت مبكر. - Tim Parenti


أوبونتو 13.04 فصاعدا

ال hostnamectl الأمر جزءًا من التثبيت الافتراضي على كل من إصدار Desktop و Server.

فهو يجمع بين تحديد اسم المضيف عبر hostname القيادة والتحرير /etc/hostname. بالإضافة إلى إعداد اسم مضيف ثابت ، يمكنه تعيين اسم المضيف "الجميل" ، والذي لا يُستخدم في Ubuntu. لسوء الحظ ، التحرير /etc/hosts لا يزال يتعين القيام به بشكل منفصل.

hostnamectl set-hostname new-hostname

هذا الأمر جزء من systemd-services الحزمة (والتي ، اعتبارا من Ubuntu 14.04 ، يتضمن أيضا timedatectl و localectl الأوامر). كما يهاجر Ubuntu ل systemd، هذه الأداة هي المستقبل.


250
2017-08-27 21:03



لاحظ أن هذا ليس متاحًا في كل مكان. بدا لي فقط على تثبيت أوبونتو 14.04 LTS ARM-7 ، و hostnamectl غير موجود تخمين بعض النكهات من Ubuntu لا تستخدم systemd بعد. - Stéphane
@ Stéphane الأوامر هي جزء من مجموعة systemd ، ولكنها متوفرة بشكل مستقل. في هذه الحالة ، 13.04 - 14.10 لا تستخدم systemd كمبدأ ، من خلال الأمر متاح. - muru
@ H2ONaCl يتم تعيين متغير shell عند بدء التشغيل ، فقط افتح shell آخر ويجب أن يكون متغير hostname بخير. أما بالنسبة sudo ، فإن الخطأ حول دقة اسم المضيف لم يمنعني من فعل أي شيء. - muru
@ H2ONaCl آه ، لكن المتغير HOSTNAME غير قياسي - IIRC dash و ksh لا يمتلكه ، يستخدم zsh HOST ، وبقدر ما تذهب متغيرات shell ، فهي أسفل الكومة. - muru
لا يزال يعمل في Ubuntu 18.04 LTS. - donlucacorleone


بدون إعادة تشغيل

تغيير اسم المضيف أو اسم الكمبيوتر في ubuntu دون إعادة تشغيل

تعديل / etc / hostname والتغيير إلى القيمة الجديدة ،

nano /etc/hostname 

تحرير / etc / hosts وتغيير السطر القديم 127.0.1.1 إلى اسم المضيف الجديد

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

ملحوظة : لقد قرأته في منتدى> Edit / etc / hosts وقمت بتغيير الخط القديم 127.0.1.1 إلى اسم مضيفك الجديد (إذا لم تقم بذلك ، فلن تكون قادرًا على استخدام sudo بعد الآن. إذا كنت قد فعلت ذلك بالفعل ، اضغط على ESC في قائمة grub ، واختر الاسترداد ، وقم بتحرير ملف المضيف إلى الإعدادات الصحيحة)

الآن بعد إعادة التشغيل ، سيكون اسم المضيف الخاص بك هو الجديد الذي اخترته

بدون اعادة تشغيل

للتغيير دون إعادة تشغيل الكمبيوتر، يمكنك فقط استخدام hostname.sh بعد تحرير / etc / hostname. يجب عليك الاحتفاظ بكلا أسماء المضيفين في / etc / hosts (127.0.0.1 oldhost oldhost) حتى تقوم بتنفيذ الأمر أدناه:

sudo service hostname start

ملحوظة : فوق الأمر لجعل التغيير نشطًا. سيتم الاحتفاظ باسم المضيف المحفوظة في هذا الملف (/ etc / hostname) عند إعادة تشغيل النظام (وسيتم تعيينه باستخدام نفس الخدمة).


58
2018-02-13 20:16



على Ubuntu 12.10 ، لا يعمل الجزء الأخير مع رسالة الخطأ التالية sudo: unable to resolve host old-hostname. بالنسبة لهذا الجزء ، يعمل حلjesperado بشكل جيد. - Frédéric Grosshans
إذا لم تقم بتحديث /etc/hosts، تبدأ الأمور في الفشل في 12.04.2 LTS ، بما في ذلك w القيادة ، اباتشي ، /sbin/reboot وأكثر بكثير. تأكد من تحديث /etc/hosts - Josh
أنت تشير إلى كليهما 127.0.0.1 إلى عن على localhost و 127.0.1.1 لاسم مضيف مخصص. حق؟ ثم ، في نهاية إجابتك ، لاتخاذ إجراء بدون إعادة، أنت المرجعية /etc/hosts و 127.0.0.1 newhost oldhost. لذلك ، ليست هناك حاجة ل 127.0.1.1 عنوان؟ - Nikos Alexandris
لم يعمل لي اضطررت لاستخدام sudo nano /etc/hosts لكي يسري التغيير ؛ دون sudo ، فقط nano /etc/hosts لم يحفظ التغيير - conman253
ما الفرق بين إعادة التشغيل وإعادة التشغيل؟ - storm


تم تعيين الاسم الافتراضي عندما كنت تقوم بتثبيت Ubuntu. يمكنك تغييره بسهولة إلى أي شيء تريده في كل من Desktop & Server من خلال تعديل ملفات المضيف والمضيف. أدناه هو كيف:

  1. صحافة السيطرةالبديلتي على لوحة المفاتيح لفتح المحطة. عند فتحه ، قم بتشغيل الأمر التالي: sudo hostname NEW_NAME_HERE

سيؤدي ذلك إلى تغيير اسم المضيف حتى إعادة التمهيد التالية. لن يكون التغيير مرئيًا على الفور في الجهاز الحالي. بدء محطة جديدة لرؤية اسم المضيف الجديد.

  1. لتغيير الاسم بشكل دائم ، قم بتشغيل الأمر لتحرير ملفات المضيف:

    sudo -H gedit /etc/hostname و sudo -H gedit /etc/hosts

بالنسبة لخادم Ubuntu بدون واجهة مستخدم رسومية ، شغّل sudo vi /etc/hostname و sudo vi /etc/hosts وتحريرها واحدة تلو الأخرى. في كلا الملفين ، قم بتغيير الاسم إلى ما تريد وحفظه.

أخيرًا ، أعد تشغيل الكمبيوتر لتطبيق التغييرات.


42
2017-11-01 22:47





هنا هو البرنامج النصي الذي يغير اسم المضيف بالطريقة المنصوص عليها. يضمن ذلك ليس فقط 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}')"

16
2018-03-07 06:30



ماذا السطر الأخير في البرنامج النصي su $SUDO_USER -c "xauth add $(xauth list | sed 's/^.*\//'"$NEW_HOSTNAME"'\//g' | awk 'NR==1 {sub($1,"\"&\""); print}')" فعل؟ فضولي فقط. - Fr0zenFyr
@ Fr0zenFyr: يستغرق رمز مصادقة X11 صالحًا (xauth list) ويستبدل اسم المضيف القديم باسم المضيف الجديد (sed). ثم awk يضع علامات الاقتباس حول الحجة الأولى ل xauth add لان xauthشكل المدخلات والمخرجات ليست متماثلة. - Lucas
شكرا على الشرح. كنت أعيد تشغيلها دائمًا حتى تدخل التغييرات حيز التنفيذ. +1 - Fr0zenFyr
trakz: في الواقع 127.a.b.c مهما كان الرقم ، هو كل مضيف محلي وفقًا لـ IETF RFC. (معظم الناس لا يعرفون هذا ، ولكن بما أن معظمهم لا يوافقون على التعديل) - Fabby


بدون إعادة تشغيل:

  1. تغيير اسم المضيف في /etc/hostname
  2. تحديث /etc/hosts وفقا لذلك
  3. sudo sysctl kernel.hostname=mynew.local.host

تحقق من اسم المضيف الحالي الخاص بك hostname -f


12
2018-03-31 14:46



مع 16.04 ، sysctl sudo: unable to resolve host oldname، sysctl: setting key "kernel.hostname": Read-only file system. ربما لأن CT داخل Proxmox. - Pablo Bianchi


للحصول على اسم مضيفك الحالي:

cat /etc/hostname

هذا يمكن تغييره في أي محرر نصوص. ستحتاج أيضًا إلى تحديث الإدخال بخلاف المضيف المحلي مقابل 127.0.0.1 في / etc / hosts.


7
2017-09-14 01:12



أو فقط قم بتشغيل الأمر "hostname" من سطر الأوامر. - elomage


  1. استبدال محتويات /etc/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

4
2018-05-08 18:26



تحذير: لن يعمل مع Ubuntu 18+ الذي يقوم بتشغيل cloud-init افتراضيا ، والذي يتحكم في اسم المضيف في التمهيد. - nslntmnx
nslntmnx هل أنت متأكد من ذلك؟ أرى في cloud-config.txt # 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. ليس لدي حاليا Ubuntu 18 حتى لا أستطيع اختباره حتى نهاية الأسبوع. - George


أوبونتو 16.04

هذا بدون إعادة بدء ودون أي استخدام المحطة.

  • اذهب إلى إعدادات النظام -> التفاصيل.
  • ذلك هو. بجانب اسم الجهاز، هناك مربع النص.
  • تحرير مربع النص وإغلاق النافذة.

فتح المحطة. انظروا لأنفسكم.

(للإصدارات القديمة ، لا يمكن تحرير مربع النص.)


4
2018-03-13 18:26