Bagaimana cara mengubah nama host tanpa restart?

497

Saya ingin mengubah nama host OS tetapi saya tidak ingin memulai kembali.

Saya telah mengedit /etc/hostnametetapi membutuhkan restart untuk dapat diterapkan. Bagaimana cara menghindarinya?

Deepak Rajput
sumber
3
Peringatan: tidak akan berfungsi dengan Ubuntu 18+ yang menjalankan cloud-init secara default, yang mengontrol nama host saat boot.
nslntmnx
@nslntmnx, Terima kasih!
MiB

Jawaban:

642

Mudah. Cukup klik ikon Gear (terletak di sudut kanan atas layar), buka layar "Tentang komputer ini" (terletak di ikon Gear) dan edit "Nama perangkat".

Atau, di terminal, gunakan perintah berikut:

sudo hostname your-new-name

Ini akan mengatur nama host ke nama baru Anda hingga Anda memulai ulang. Lihat man hostnamedan Bagaimana cara mengubah nama komputer? untuk informasi lebih lanjut. Jangan gunakan atas _nama Anda.

Catatan

Setelah restart perubahan Anda /etc/hostnameakan digunakan, jadi (seperti yang Anda katakan dalam pertanyaan), Anda harus tetap menggunakan

sudo -H gedit /etc/hostname

(atau editor lain) sehingga file itu berisi nama host.

Untuk menguji apakah file sudah diatur dengan benar, jalankan:

sudo service hostname start

Anda juga harus mengedit /etc/hostsdan mengubah baris yang berbunyi:

127.0.1.1     your-old-hostname

sehingga sekarang berisi nama host baru Anda. (Ini diperlukan jika tidak banyak perintah akan berhenti berfungsi.)

jasperado
sumber
4
saya tidak ingin memulai kembali
Deepak Rajput
23
Aku tahu. itu sebabnya Anda harus menggunakan perintah 'hostname'. Saya hanya ingin mengklarifikasi, bahwa perintah 'hostname' hanya mengubah nama host sampai Anda me-restart / crash / etc. Setelah itu akan membaca nama dari file lagi.
jasperado
5
Tergantung. Jika Anda memasukkan perintah, Anda tidak perlu memulai ulang. Nama host sudah diubah. Tetapi hanya sampai restart Anda berikutnya.
jasperado
19
Perhatikan bahwa Anda juga harus mengubah /etc/hosts(lihat jawaban lain)
JB.
9
Singkatnya, meskipun hostnameakan menyebabkan nama baru segera berlaku, itu tidak "permanen" kecuali jika Anda juga berubah /etc/hostnamedan /etc/hosts, karena itu adalah file yang akan dibaca setelah restart atau crash, yang tentu saja, Anda mungkin tidak mengharapkan sebelumnya.
Tim Parenti
280

Ubuntu 13,04 dan seterusnya

The hostnamectlPerintah merupakan bagian dari instalasi default di kedua edisi Desktop dan Server.

Ini menggabungkan pengaturan nama host melalui hostnameperintah dan pengeditan /etc/hostname. Selain mengatur nama host statis, ia dapat mengatur nama host "cantik", yang tidak digunakan di Ubuntu. Sayangnya, pengeditan /etc/hostsmasih harus dilakukan secara terpisah.

hostnamectl set-hostname new-hostname

Perintah ini adalah bagian dari systemd-servicespaket (yang, pada Ubuntu 14.04, juga termasuk timedatectldan localectlperintah). Sebagai migrasi ke Ubuntu systemd, alat ini adalah masa depan.

muru
sumber
1
Perhatikan ini tidak tersedia di mana-mana. Baru saja melihat instalasi Ubuntu 14.04 LTS ARM-7 saya, dan hostnamectltidak ada. Tebak beberapa rasa Ubuntu belum menggunakan systemd.
Stéphane
1
@ Stéphane perintah adalah bagian dari suite systemd, tetapi mereka tersedia secara independen. Dalam hal ini, 13.04-14.10 tidak menggunakan systemd sebagai init, dengan perintah tersedia.
muru
1
@ H2ONaCl variabel shell diatur pada startup, cukup buka shell lain dan variabel hostname akan baik-baik saja. Sedangkan untuk sudo, kesalahan tentang resolusi nama host tidak pernah benar-benar mencegah saya melakukan apa pun.
muru
1
@ H2ONaCl ah, tetapi variabel HOSTNAME tidak standar - dasbor IIRC dan ksh tidak memilikinya, zsh menggunakan HOST, sejauh variabel shell berjalan, ini adalah bagian bawah tumpukan.
muru
3
Masih berfungsi di Ubuntu 18.04 LTS.
LucaM
63

Tanpa Restart

Mengubah nama host atau nama komputer di ubuntu tanpa restart

Edit / etc / hostname dan ubah ke nilai baru,

nano /etc/hostname 

Edit / etc / hosts dan ubah baris 127.0.1.1 lama menjadi nama host baru Anda

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

Catatan : saya telah membacanya di forum> Edit / etc / hosts dan ubah baris 127.0.1.1 lama menjadi nama host baru Anda (jika Anda tidak melakukan ini, Anda tidak akan dapat menggunakan sudo lagi. Jika Anda sudah melakukannya , tekan ESC pada menu grub, pilih pemulihan, dan edit file host Anda ke pengaturan yang benar)

Sekarang setelah reboot, nama host Anda akan menjadi yang baru yang Anda pilih

Tanpa Reboot

Untuk mengubah tanpa reboot , Anda bisa menggunakan hostname.sh setelah mengedit / etc / hostname. Anda harus menyimpan kedua nama host Anda di / etc / hosts (127.0.0.1 newhost oldhost) hingga Anda menjalankan perintah di bawah ini:

sudo service hostname start

Catatan : Perintah di atas untuk mengaktifkan perubahan. Nama host yang disimpan dalam file ini (/ etc / hostname) akan disimpan pada reboot sistem (dan akan diatur menggunakan layanan yang sama).

Satu Nol
sumber
Di Ubuntu 12.10, bagian terakhir tidak berfungsi dengan pesan kesalahan berikut sudo: unable to resolve host old-hostname. Untuk bagian itu, solusi @jesperado bekerja dengan baik.
Frédéric Grosshans
3
Jika Anda tidak memperbarui /etc/hosts, hal-hal mulai gagal pada 12.04.2 LTS, termasuk wperintah, Apache, /sbin/rebootdan banyak lagi. Pastikan untuk memperbarui/etc/hosts
Josh
Anda merujuk 127.0.0.1untuk localhostdan 127.0.1.1untuk nama host khusus. Baik? Kemudian, menjelang akhir jawaban Anda, untuk tindakan tanpa rebot , Anda merujuk /etc/hostsdan 127.0.0.1 newhost oldhost. Jadi, tidak perlu 127.0.1.1alamat?
Nikos Alexandris
1
tidak bekerja untuk saya. saya harus menggunakan sudo nano /etc/hostsagar perubahan berlaku; tanpa sudo, hanya nano /etc/hostssaja tidak menyimpan perubahan
conman253
2
Apa perbedaan antara restart dan reboot?
badai
43

Nama default ditetapkan ketika Anda menginstal Ubuntu. Anda dapat dengan mudah mengubahnya ke apa pun yang Anda inginkan di Desktop & Server dengan mengedit file host dan nama host. Di bawah ini caranya:

  1. Tekan CtrlAlttpada keyboard untuk membuka terminal. Saat terbuka, jalankan perintah di bawah ini:sudo hostname NEW_NAME_HERE

Ini akan mengubah nama host sampai reboot berikutnya. Perubahan tidak akan langsung terlihat di terminal Anda saat ini. Mulai terminal baru untuk melihat nama host baru.

  1. Untuk mengubah nama secara permanen, jalankan perintah untuk mengedit file host:

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

Untuk server Ubuntu tanpa GUI, jalankan sudo vi /etc/hostnamedan sudo vi /etc/hostsdan mengedit mereka satu per satu. Di kedua file, ubah nama menjadi apa yang Anda inginkan dan simpan.

Terakhir, nyalakan kembali komputer Anda untuk menerapkan perubahan.

Mohsen Gh.
sumber
16

Berikut ini adalah skrip yang mengubah nama host dengan cara yang ditentukan. Ini memastikan bahwa tidak hanya sudotetapi juga aplikasi X11 terus berfungsi tanpa perlu restart.

Pemakaian: 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}')"
Lucas
sumber
Apa yang dilakukan baris terakhir dalam skrip su $SUDO_USER -c "xauth add $(xauth list | sed 's/^.*\//'"$NEW_HOSTNAME"'\//g' | awk 'NR==1 {sub($1,"\"&\""); print}')"? Hanya penasaran.
Fr0zenFyr
4
@ Fr0zenFyr: dibutuhkan token otentikasi X11 yang valid ( xauth list) dan mengganti nama host lama dengan nama host baru ( sed). Kemudian awkberikan tanda kutip pada argumen pertama xauth addkarena xauthformat input dan output tidak simetris.
Lucas
Terima kasih untuk penjelasannya. Saya selalu memulai ulang agar perubahan diterapkan. +1
Fr0zenFyr
@trakz: Sebenarnya 127.abc berapapun jumlahnya, semuanya adalah localhost sesuai IETF RFC. (kebanyakan orang tidak tahu ini, tetapi karena kebanyakan tidak, edit disetujui)
Fabby
14

Tanpa restart:

  1. ubah nama host di /etc/hostname
  2. memperbarui /etc/hostssesuai
  3. sudo sysctl kernel.hostname=mynew.local.host

Periksa nama host Anda saat ini dengan hostname -f

Tombart
sumber
Dengan 16,04, sysctl sudo: unable to resolve host oldname, sysctl: setting key "kernel.hostname": Read-only file system. Mungkin karena ada CT di dalam Proxmox.
Pablo A
14

Kegigihan nama host Cloud-init (Ubuntu 18+)

Sementara pendekatan di atas ( hostnamectl,, etc/hostnamedll) bekerja untuk perubahan nama host langsung, dengan munculnya cloud-init - yang dapat mengontrol pengaturan nama host - di antara banyak hal lainnya. Jadi itu tidak akan menempel setelah reboot jika cloud-init diinstal. Jika Anda ingin perubahan tetap setelah reboot maka Anda perlu mengedit file konfigurasi cloud-init , nonaktifkan modul set / perbarui nama host cloud-init :

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

atau nonaktifkan sepenuhnya cloud-init:

sudo touch /etc/cloud/cloud-init.disabled
Pierz
sumber
1
Harap jawab jawaban ini. Ini bekerja baik untuk saya. Jawaban lain tidak berfungsi dengan adopsi cloud-init.
nslntmnx
@nslntmnx apakah itu diinstal secara default pada desktop 18,04, hanya server saja? Desktop tidak punya /etc/cloud/cloud.cfg. Apa nama paketnya? Adil cloud-init?
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件
1
Juga, apakah ada cara untuk mengubah nama host dengan cloud-init alih-alih hanya menonaktifkan penggantiannya?
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件
1
Ya, Anda dapat mengubah banyak pengaturan menggunakan cloud-init - lihat tautan dokumen dalam jawaban saya - inilah tautan untuk mengatur nama host: cloudinit.readthedocs.io/en/latest/topics/…
Pierz
7

Untuk mendapatkan nama host Anda saat ini:

cat /etc/hostname

Ini dapat diubah di editor teks apa pun. Anda juga perlu memperbarui entri selain localhost terhadap 127.0.0.1 di / etc / hosts.

tagMacher
sumber
1
Atau cukup jalankan perintah "hostname" dari baris perintah.
elomage
4
  1. Ganti konten /etc/hostnamedengan nama host yang diinginkan (Anda dapat mengedit dengan sudo nano /etc/hostname)
  2. Di /etc/hosts, ganti entri di sebelah 127.0. 1 .1 dengan nama host yang diinginkan (Anda dapat mengedit dengan sudo nano /etc/hosts)
  3. Menjalankan sudo service hostname restart; sudo service networking restart
George
sumber
Peringatan: tidak akan berfungsi dengan Ubuntu 18+ yang menjalankan cloud-init secara default, yang mengontrol nama host saat boot.
nslntmnx
@nslntmnx Anda yakin tentang ini? Saya melihat di 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.Saat ini saya tidak memiliki Ubuntu 18 jadi saya tidak bisa mengujinya sampai akhir pekan.
George
4

Ubuntu 16.04

Ini tanpa restart dan tanpa menggunakan terminal.

  • Buka Pengaturan Sistem -> Detail .
  • Itu ada. Di samping nama Perangkat , ada kotak teks.
  • Edit kotak teks dan tutup jendela.

Terminal terbuka. Lihat sendiri.

(Untuk versi yang lebih lama, kotak teks tidak dapat diedit.)

shonku
sumber
4

Jawaban klasik untuk pertanyaan pengirim asli adalah bahwa, setelah Anda diedit /etc/hostname, Anda membuatnya berlaku tanpa restart dengan menjalankan nama host (1) dengan opsi -F( --file) sebagai root:

sudo hostname -F /etc/hostname

The hostname (5) penanganan dengan /etc/hostnamedan program mengatakan telah sama di Debian dan turunannya selama lebih dari dua puluh tahun sekarang, dan paket menyediakan itu telah ditandai penting dan diperlukan , dan IIRC skrip init telah benar-benar menggunakan hal yang sama untuk dekade ( /etc/init/hostname.confmasih berisi itu), jadi saya harus mengatakan saya benar-benar bingung bagaimana tidak ada yang menyebutkan ini :)

Josip Rodin
sumber
Peringatan: tidak akan berfungsi dengan Ubuntu 18+ yang menjalankan cloud-init secara default, yang mengontrol nama host saat boot.
nslntmnx
@nslntmnx erm, apa? Apa ketergantungan baru yang diperkenalkan Ubuntu 18 untuk menarik cloud-init secara default? Anda mungkin memikirkan beberapa gambar yang disesuaikan dengan cloud, dalam hal ini seharusnya tidak mengejutkan bahwa mereka menjalankan alat penyedia cloud kustom.
Josip Rodin
3
sudo hostname your-new-name
sudo /etc/init.d/networking restart

Itu harus melakukan pekerjaan yang saya pikir

OmarQunsul
sumber
5
Saya tidak berpikir ini akan selamat restart
Collin Anderson
Peringatan: tidak akan berfungsi dengan Ubuntu 18+ yang menjalankan cloud-init secara default, yang mengontrol nama host saat boot.
nslntmnx
3

Saya telah membaca jawabannya, Tapi saya pikir Mungkin Anda mencari ini:

Cukup jalankan dua perintah ini setelah mengedit /etc/hostnamefile.

$ sudo service hostname restart
$ exec bash

Itu saja. Tidak perlu restart. Pastikan juga Anda mengubah nama dalam /etc/hostsfile.

Raman
sumber
Tidak seperti banyak jawaban lain, ini tidak diperbarui /etc/hosts(saya konfirmasi pada 14,04).
IsaacS
Peringatan: tidak akan berfungsi dengan Ubuntu 18+ yang menjalankan cloud-init secara default, yang mengontrol nama host saat boot.
nslntmnx
2

Ubuntu 16.04

Solusi berdasarkan jawaban dari DigitalOcean Comunity.

Edit file host .

$ sudo nano /etc/hosts

Ganti oldname dengan yang baru.

127.0.0.1 localhost newname

Siapkan nama host baru.

$ sudo hostnamectl set-hostname newname

Jekis
sumber
Peringatan: tidak akan berfungsi dengan Ubuntu 18+ yang menjalankan cloud-init secara default, yang mengontrol nama host saat boot.
nslntmnx