原来修改hostname,直接在/etc/sysconfig/network里边直接修改,重启以后就生效,没有多关注其他的,这几天遇到一个安装系统设置hostname为localhost或者localhost.localdoamin时启动以后显示的hostname不是locahost。我这一个机器显示的是这个:hn.kd.ny.adsl 。所以问题来了,为什么会出现这个用户名呢。后来经过检查发现这个显示是正确的,下边做解释说明。
查看现有设置hostname,这个是我修改以后的,重启以后显示是正常的:
[root@lxself zabbix]# more /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 [root@lxself zabbix]# more /etc/sysconfig/network NETWORKING=yes HOSTNAME=lxself.localdomain
下面从这几方面说明此问题:
1、修改hostname以后不重启可以直接生效的方法:


用这两个方法修改以后可以立即生效,新开窗口克隆会话时hostname会变成修改过的名字,但是重启以后还是会恢复为原样的。

此时可以配合使用hostname newname或者sysctl kernel.hostname=newname来让显示的hostname立即生效而不用重启。
用这种方法修改以后需要重启才可以生效,用service network restart重启网络是不会变为新用户名的。
2、总结一下修改方法:
hostname DB-Server 运行后立即生效(新会话生效),但是在系统重启后会丢失所做的修改
echo DB-Server > /proc/sys/kernel/hostname 运行后立即生效(新会话生效),但是在系统重启后会丢失所做的修改
sysctl kernel.hostname=DB-Server 运行后立即生效(新会话生效),但是在系统重启后会丢失所做的修改
修改/etc/sysconfig/network下的HOSTNAME变量 需要重启生效,永久性修改。
3、说明下开头说的设置为localhost为什么会变为其他的:
从其他地方查了下有如下说明:
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.
hostname是一个内核参数,保存在/proc/sys/kernel/hostname下边。启动时从rc.sysinit读取,下面看下rc.sysinit里边关于hostname的一段代码:
# In theory there should be no more than one network interface active # this early in the boot process -- the one we're booting from. # Use the network address to set the hostname of the client. This # must be done even if we have local storage. ipaddr= if [ "$HOSTNAME" = "localhost" -o "$HOSTNAME" = "localhost.localdomain" ]; then ipaddr=$(ip addr show to 0.0.0.0/0 scope global | awk '/[[:space:]]inet / { print gensub("/.*","","g",$2) }') for ip in $ipaddr ; do HOSTNAME= eval $(ipcalc -h $ip 2>/dev/null) [ -n "$HOSTNAME" ] && { hostname ${HOSTNAME} ; break; } done fi
从上边可以看出启动时如果hostname是localhost或者localhost.localdomain时会读取ip的hostname,查看ip的hostname如下图所示:
遮挡着部分是本机外网IP地址。所以此时应该明白为什么会出现上述情况。