(disalin dari salah satu jawaban saya di SF )
The hostname
Perintah mengembalikan hasil dari DNS dan /etc/hosts
.
hostname
setara dengan uname -n
dan merupakan "nama host" atau "nama panggilan" kotak yang sebenarnya.
Semua hostname
argumen lain menggunakan nama kecil ini untuk mencari info.
Jadi sebelum melangkah lebih jauh, saya harus menjelaskan /etc/hosts
format file.
Kolom pertama cukup jelas, ini adalah alamat IP yang harus diselesaikan oleh semua nama host pada saluran tersebut. Bidang kedua adalah nama host utama untuk IP itu. Kolom yang tersisa adalah alias.
Jadi, jika Anda menjalankannya hostname -f
pertama-tama akan mencoba menyelesaikan IP untuk nama panggilan Anda. Tergantung pada bagaimana Anda mengatur hosts:
entri dalam /etc/nsswitch.conf
metode ini akan bervariasi.
- Jika Anda mengonfigurasinya untuk menggunakan dns, itu akan menggunakan domain pencarian yang dikonfigurasi
/etc/resolv.conf
hingga mendapat IP kembali dari DNS.
- Jika Anda mengonfigurasinya untuk menggunakan file, ia akan mencari
/etc/hosts
untuk menemukan baris di mana nama host utama atau nama alias adalah nama panggilan Anda saat ini ( uname -n
), dan kemudian mengembalikan alamat IP di baris itu.
Setelah memiliki IP, maka akan mencoba melakukan reverse lookup pada IP itu. Sekali lagi ini akan menggunakan DNS untuk ini dan file host Anda berdasarkan pada nsswitch.conf
. Dalam hal menggunakan file hosts Anda, itu akan mengembalikan entri utama (yang merupakan bidang pertama setelah IP dalam file).
hostname -a
hanya akan bekerja dengan file host karena melakukan pencarian terbalik di DNS hanya memberi Anda 1 hasil. Dengan file hosts, ia mengembalikan alises di baris yang cocok (yang merupakan segalanya setelah entri pertama, nama host utama).
Jadi singkatnya, kemungkinan alasan untuk masalah Anda adalah karena Anda tidak memiliki entri /etc/hosts
yang berisi nama host Anda ( uname -n
).
Contoh
Jika nama kecil Anda adalah 'foobar', dan Anda memiliki entri /etc/hosts
seperti ini:
127.0.0.1 foobar.example.com foobar localhost.localdomain localhost
Maka Anda akan mendapatkan hasil perintah berikut:
# hostname
foobar
# uname -n
foobar
# hostname -f
foobar.example.com
# hostname -a
foobar localhost.localdomain localhost