ฉันต้องการเปลี่ยนชื่อโฮสต์ระบบปฏิบัติการ แต่ฉันไม่ต้องการรีสตาร์ท
ฉันแก้ไขแล้ว/etc/hostnameแต่ต้องมีการเริ่มระบบใหม่เพื่อให้ใช้งานได้ จะหลีกเลี่ยงสิ่งนี้ได้อย่างไร
ฉันต้องการเปลี่ยนชื่อโฮสต์ระบบปฏิบัติการ แต่ฉันไม่ต้องการรีสตาร์ท
ฉันแก้ไขแล้ว/etc/hostnameแต่ต้องมีการเริ่มระบบใหม่เพื่อให้ใช้งานได้ จะหลีกเลี่ยงสิ่งนี้ได้อย่างไร
คำตอบ:
มันเป็นเรื่องง่าย. เพียงคลิกไอคอนรูปเฟือง (อยู่ที่มุมขวาบนของหน้าจอ) เปิดหน้าจอ "เกี่ยวกับคอมพิวเตอร์เครื่องนี้" (อยู่ที่ไอคอนรูปเฟือง) และแก้ไข "ชื่ออุปกรณ์"
หรือในเทอร์มินัลใช้คำสั่งต่อไปนี้:
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
เพื่อให้ตอนนี้มีชื่อโฮสต์ใหม่ของคุณ (สิ่งนี้จำเป็นต้องใช้มิฉะนั้นคำสั่งจำนวนมากจะหยุดทำงาน)
/etc/hosts(ดูคำตอบอื่น ๆ )
hostnameจะทำให้ชื่อใหม่มีผลในทันที แต่จะไม่ "ถาวร" เว้นแต่คุณจะเปลี่ยน/etc/hostnameและ/etc/hostsเนื่องจากไฟล์เหล่านั้นเป็นไฟล์ที่จะอ่านหลังจากรีสตาร์ทหรือเกิดความผิดพลาดซึ่งแน่นอนว่าคุณอาจไม่ คาดหวังล่วงหน้า
hostnamectlคำสั่งเป็นส่วนหนึ่งของการติดตั้งเริ่มต้นในทั้งสองรุ่น Desktop และเซิร์ฟเวอร์
มันรวมการตั้งชื่อโฮสต์ผ่านทางคำสั่งและการแก้ไขhostname /etc/hostnameเช่นเดียวกับการตั้งค่าชื่อโฮสต์แบบคงที่ก็สามารถตั้งค่าชื่อโฮสต์ "สวย" ซึ่งไม่ได้ใช้ใน Ubuntu น่าเสียดายที่การแก้ไข/etc/hostsยังต้องแยกต่างหาก
hostnamectl set-hostname new-hostname
คำสั่งนี้เป็นส่วนหนึ่งของsystemd-servicesแพ็คเกจ (ซึ่งใน Ubuntu 14.04 นั้นรวมถึงtimedatectlและlocalectlคำสั่งด้วย) ขณะที่อูบุนตูย้ายไปที่systemdเครื่องมือนี้เป็นอนาคต
hostnamectlไม่มีอยู่จริง เดาอูบุนตูบางอย่างที่ยังไม่ได้ใช้ systemd
การเปลี่ยนชื่อโฮสต์หรือชื่อคอมพิวเตอร์ใน 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
หมายเหตุ : ฉันได้อ่านมันในฟอรัม> แก้ไข / etc / hosts และเปลี่ยนบรรทัดเก่า 127.0.1.1 เป็นชื่อโฮสต์ใหม่ของคุณ (ถ้าคุณไม่ทำเช่นนี้คุณจะไม่สามารถใช้ sudo ได้อีกต่อไปถ้าคุณไม่ได้ทำไปแล้ว กด ESC บนเมนูด้วงเลือกการกู้คืนและแก้ไขไฟล์โฮสต์ของคุณเป็นการตั้งค่าที่ถูกต้อง)
หลังจากรีบูตชื่อโฮสต์ของคุณจะเป็นชื่อใหม่ที่คุณเลือก
หากต้องการเปลี่ยนแปลงโดยไม่ต้องรีบูทคุณสามารถใช้ชื่อโฮสต์ได้หลังจากคุณแก้ไข / etc / hostname คุณต้องเก็บชื่อโฮสต์ทั้งสองไว้ใน / etc / hosts (127.0.0.1 newhost oldhost) จนกว่าคุณจะรันคำสั่งด้านล่าง:
sudo service hostname start
หมายเหตุ : คำสั่งด้านบนเพื่อให้การเปลี่ยนแปลงใช้งานได้ ชื่อโฮสต์ที่บันทึกในไฟล์นี้ (/ etc / ชื่อโฮสต์) จะถูกเก็บไว้ในการรีบูตระบบ (และจะถูกตั้งค่าโดยใช้บริการเดียวกัน)
sudo: unable to resolve host old-hostnameซึ่งเป็นส่วนหนึ่งที่ผ่านมาไม่ได้ทำงานกับข้อผิดพลาดดังต่อไปนี้ สำหรับส่วนนั้นโซลูชัน @jesperado ทำงานได้ดี
/etc/hostsสิ่งต่าง ๆ ที่เริ่มจะล้มเหลวใน 12.04.2 LTS รวมถึงwคำสั่ง Apache /sbin/rebootและอีกมากมาย อย่าลืมอัปเดต/etc/hosts
127.0.0.1สำหรับlocalhostและ127.0.1.1สำหรับชื่อโฮสต์ที่กำหนดเอง ขวา? จากนั้นในช่วงสุดท้ายของคำตอบของคุณสำหรับการดำเนินการได้โดยไม่ต้อง rebotคุณอ้างอิงและ/etc/hosts 127.0.0.1 newhost oldhostดังนั้นไม่จำเป็นต้องมี127.0.1.1ที่อยู่หรือไม่?
sudo nano /etc/hostsเพื่อให้การเปลี่ยนแปลงมีผล โดยไม่ต้อง sudo เพียงแค่nano /etc/hostsไม่ได้บันทึกการเปลี่ยนแปลง
ชื่อเริ่มต้นถูกตั้งค่าเมื่อคุณติดตั้ง Ubuntu คุณสามารถเปลี่ยนเป็นสิ่งที่คุณต้องการได้ทั้งบนเดสก์ท็อปและเซิร์ฟเวอร์โดยแก้ไขไฟล์โฮสต์และชื่อโฮสต์ ด้านล่างเป็นอย่างไร:
sudo hostname NEW_NAME_HEREสิ่งนี้จะเปลี่ยนชื่อโฮสต์จนกว่าจะรีบูตครั้งถัดไป การเปลี่ยนแปลงจะไม่ปรากฏในเทอร์มินัลปัจจุบันของคุณทันที เริ่มเทอร์มินัลใหม่เพื่อดูชื่อโฮสต์ใหม่
หากต้องการเปลี่ยนชื่ออย่างถาวรให้เรียกใช้คำสั่งเพื่อแก้ไขไฟล์โฮสต์:
sudo -H gedit /etc/hostname และ sudo -H gedit /etc/hosts
สำหรับเซิร์ฟเวอร์ Ubuntu โดยไม่ต้อง GUI เรียกใช้sudo vi /etc/hostnameและsudo vi /etc/hostsและแก้ไขพวกเขาหนึ่งโดยหนึ่ง ในทั้งสองไฟล์เปลี่ยนชื่อเป็นสิ่งที่คุณต้องการและบันทึก
ในที่สุดรีสตาร์ทคอมพิวเตอร์ของคุณเพื่อใช้การเปลี่ยนแปลง
นี่คือสคริปต์ที่เปลี่ยนชื่อโฮสต์ตามวิธีที่กำหนด ทำให้มั่นใจได้ว่าไม่เพียง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}')"ทำอะไร แค่สงสัย.
xauth listและแทนที่ชื่อโฮสต์เก่าด้วยชื่อโฮสต์ใหม่ ( sed) จากนั้นawkใส่เครื่องหมายคำพูดล้อมรอบอาร์กิวเมนต์แรกเป็นxauth addเพราะxauthรูปแบบอินพุตและเอาต์พุตไม่สมมาตร
โดยไม่ต้องรีสตาร์ท:
/etc/hostname/etc/hostsตามsudo sysctl kernel.hostname=mynew.local.hostตรวจสอบชื่อโฮสต์ปัจจุบันของคุณด้วย hostname -f
sudo: unable to resolve host oldname sysctl: setting key "kernel.hostname": Read-only file systemอาจเป็นเพราะ CT ภายใน Proxmox
ในขณะที่วิธีการข้างต้น ( hostnamectl, etc/hostnameและอื่น ๆ ) ทำงานเพื่อเปลี่ยนชื่อโฮสต์ทันทีด้วยการถือกำเนิดของcloud-init - ซึ่งสามารถควบคุมการตั้งค่าชื่อโฮสต์ - ในสิ่งอื่น ๆ อีกมากมาย ดังนั้นจะไม่ติดหลังจากรีบูตหากติดตั้ง cloud-init หากคุณต้องการให้การเปลี่ยนแปลงดำเนินต่อไปหลังจากรีบูตแล้วคุณจะต้องแก้ไขไฟล์กำหนดค่าcloud-initให้ปิดใช้งานโมดูลชื่อ / การตั้งค่าชื่อโฮสต์ของ cloud-init :
sudo sed 's/preserve_hostname: false/preserve_hostname: true/' /etc/cloud/cloud.cfg
หรือปิดการใช้งาน cloud-init ทั้งหมด:
sudo touch /etc/cloud/cloud-init.disabled
/etc/cloud/cloud.cfgสก์ท็อปไม่ได้ ชื่อแพ็คเกจคืออะไร? เพียงแค่cloud-init?
ในการรับชื่อโฮสต์ปัจจุบันของคุณ:
cat /etc/hostname
สิ่งนี้สามารถเปลี่ยนแปลงได้ในโปรแกรมแก้ไขข้อความใด ๆ คุณจะต้องอัปเดตรายการอื่นนอกเหนือจาก localhost กับ 127.0.0.1 ใน / etc / hosts
/etc/hostnameด้วยชื่อโฮสต์ที่ต้องการ (คุณสามารถแก้ไขได้ด้วยsudo nano /etc/hostname)/etc/hostsแทนที่รายการถัดจาก 127.0 1 .1 พร้อมชื่อโฮสต์ที่ต้องการ (คุณสามารถแก้ไขได้sudo nano /etc/hosts)sudo service hostname restart; sudo service networking restart# 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 ดังนั้นฉันจึงไม่สามารถทดสอบได้จนกว่าจะถึงสุดสัปดาห์
นี่คือโดยไม่ต้องรีสตาร์ทและไม่มีการใช้ขั้วใด ๆ
เปิดเทอร์มินัล ดูตัวเอง
(สำหรับรุ่นเก่ากล่องข้อความไม่สามารถแก้ไขได้)
คำตอบแบบดั้งเดิมสำหรับคำถามดั้งเดิมของโปสเตอร์คือเมื่อคุณแก้ไข/etc/hostnameแล้วคุณสามารถใช้โดยไม่ต้องรีสตาร์ทโดยใช้ชื่อโฮสต์ (1)ด้วยตัวเลือก-F( --file) เป็นรูต:
sudo hostname -F /etc/hostname
ชื่อโฮสต์ (5)การจัดการกับ/etc/hostnameและโปรแกรมดังกล่าวได้รับการเดียวกันใน Debian และอนุพันธ์มานานกว่ายี่สิบปีแล้วและแพคเกจให้มันได้รับการติดแท็กที่สำคัญและจำเป็นและ IIRC สคริปต์ init ได้ใช้ตัวอักษรในสิ่งเดียวกันสำหรับ ทศวรรษที่ผ่านมา ( /etc/init/hostname.confยังมีมัน) ดังนั้นฉันต้องบอกว่าฉันงงอย่างแท้จริงว่าไม่มีใครพูดถึงเรื่องนี้แล้ว :)
sudo hostname your-new-name
sudo /etc/init.d/networking restart
นั่นควรจะทำงานที่ฉันคิดว่า
ฉันได้อ่านคำตอบแล้ว แต่ฉันคิดว่าคุณน่าจะมองหาสิ่งนี้:
เพียงรันคำสั่งสองคำสั่งนี้หลังจากแก้ไข/etc/hostnameไฟล์
$ sudo service hostname restart
$ exec bash
นั่นคือทั้งหมดที่ ไม่จำเป็นต้องรีสตาร์ทนอกจากนี้ยังต้องแน่ใจว่าคุณเปลี่ยนชื่อ/etc/hostsไฟล์ด้วย
/etc/hosts(ฉันยืนยันเมื่อวันที่ 14.04)
โซลูชันขึ้นอยู่กับคำตอบจาก DigitalOcean Comunity
แก้ไขไฟล์โฮสต์
$ sudo nano /etc/hosts
แทนที่oldnameด้วยชื่อใหม่
127.0.0.1 localhost newname
ตั้งค่าชื่อโฮสต์ใหม่
$ sudo hostnamectl set-hostname newname