修改hostname
旧的hostname信息
[root@dg-master ~]# more /proc/sys/kernel/hostname
dg-master
[root@dg-master ~]# /bin/hostname
dg-master
[root@dg-master ~]# more /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=dg-master
修改为新的hostname
1.1 只修改network的hostname+reboot重启的方式
[root@dg-master ~]# vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=mail.dg.com
[root@dg-master ~]# hostname
dg-master
[root@dg-master ~]# more /proc/sys/kernel/hostname
dg-master
[root@dg-master ~]# sysctl kernel.hostname
kernel.hostname = dg-master
[root@dg-master ~]# reboot
重启之后生效
[root@mail ~]# more /proc/sys/kernel/hostname
mail.dg.com
[root@mail ~]# /bin/hostname
mail.dg.com
[root@mail ~]# more /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=mail.dg.com
1.2修改kernel.hostname
[root@mail ~]# echo mail.test.com > /proc/sys/kernel/hostname
[root@mail ~]# more /proc/sys/kernel/hostname
mail.test.com
[root@mail ~]# hostname
mail.test.com
[root@mail ~]# more /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=mail.dg.com
Note:这里可以看到/etc/sysconfig/network未修改成mail.test.com
重启之后的hostname
[root@mail ~]# hostname
mail.dg.com
[root@mail ~]# more /proc/sys/kernel/hostname
mail.dg.com
[root@mail ~]# more /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=mail.dg.com
Note:重启之后,hostname应用的是network的配置,而不是kernel.hostname的设置
为什么会这样
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的值是启动过程中读取rc.sysinit文件里面的设置加载的。
[root@mail ~]# more /etc/rc.d/rc.sysinit
#!/bin/bash
#
# /etc/rc.d/rc.sysinit - run once at boot time
#
# Taken in part from Miquel van Smoorenburg's bcheckrc.
#
HOSTNAME=$(/bin/hostname)
set -m
if [ -f /etc/sysconfig/network ]; then
. /etc/sysconfig/network
fi
if [ -z "$HOSTNAME" -o "$HOSTNAME" = "(none)" ]; then
HOSTNAME=localhost
Fi
Note:如果存在/etc/sysconfig/network文件,则生效此文件,如果hostname为空则设置为localhost,可以看到,启动的过程中,采用的network的hostname的设置。
不重启的修改新的hostname(重启和新开的会话值一样)
[root@mail ~]# vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=mail.fa.com
[root@mail ~]# echo mail.fa.com > /proc/sys/kernel/hostname
[root@mail ~]# more /proc/sys/kernel/hostname
mail.fa.com
Note:hostname是内核参数,确实是来自kernal.hostname的设置,但是重启会收到network里面的hostname影响。所有同时修改两者就可以不重启的生效hostname了。而不是单一的修改某一个