ฉันต้องการเปลี่ยนชื่อโฮสต์ระบบปฏิบัติการ แต่ฉันไม่ต้องการรีสตาร์ท
ฉันแก้ไขแล้ว/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