看了很多的技术文章,讲到Centos 修改 HOSTNAME 时,一般就几个回答:
(1)临时修改
直接 hostname XXX 然后再起一个新的会话,就生效了,只是重启后,主机名又恢复原样了。
(2)永久更改,主要是两个文件
vim /etc/sysconfig/network 然后修改 HOSTNAME= XXX
vim /etc/hosts 然后找到 127.0.0.1 中,看对应的主机名,修改为 XXX
然后呢,重启就可以了。
修改为其他的名字后,确实是可以生效的。
但是如果只是想用 localhost 作为主机名时,可能你在 /etc/sysconfig/network 修改主机名为 localhost 并不一定会生效,有可能是4WAN_1LAN_IPSec_VPN_Router 这种主机名。
那怎么办呢?一般来说,就是在 /etc/sysconfig/network 修改主机名为 localhost 后,在 /etc/rc.localhost 加入开机自动执行主机名修改为 localhost 即可,即是加入 hostname localhost 。
==============================================================================
hostname 是 Linux 系统下的一个内核参数,它保存在 /proc/sys/kernel/hostname 下,但是它的值是 Linux 启动时从 /etc/rc.d/rc.sysinit 读取的。
Hostname is a kernel parameter which stores hostname of the system. Its location is"/proc/sys/kernel/hostname" The value for this parameter is loaded to kernel by rc.sysinit file during the boot process.
结论:(1) /etc/sysconfig/network 确实是 hostname 的配置文件, hostname 的值跟该配置文件中的 HOSTNAME 有一定的关联关系,但是没有必然关系, hostname 的值来自内核参数 /etc/proc/kernel/hostname。如果通过命令强制修改内核参数, sysctl kernel.hostname=TEST 修改了内核参数,主机名就已经修改为 TEST 了。 但是 /etc/sysconfig/network 中的值并没有改变,所以说,内核参数才是主导。
(2) hostname 与 /etc/hosts 下的配置有关系吗?答案是:主机名与这个配置文件没有关系,即是说,修改主机名,并不依赖 /etc/hosts 文件。其实 /etc/hosts 的作用相当于 DNS, 提供 IP 地址到 hostname 的对应。比如, 在这里定义了 127.0.0.1 对应 localhost 后, 127.0.0.1 这个IP地址,与域名 localhost 是同一指向 127.0.0.1