Linux修改主机名【转】

一、永久修改
修改/etc/sysconfig/network,在里面指定主机名称HOSTNAME=
然后执行命令
hostname 主机名
这个时候可以注销一下系统,再重登录之后就行了。

或者修改/etc/hosts文件中添加
192.168.2.13      linux     ####ip +主机名
然后:
hostname 主机名
这个时候可以注销一下系统,再重登录之后

二、临时修改:
shell下执行:
#hostname    主机名
ctrl+d注销一下系统,再重登录

========================================================================

 

cat /proc/sys/kernel/hostname查看。 
#hostname 
#cat /proc/sys/kernel/hostname 
上面两种输出结果相同。 
修改运行时Linux系统的hostname,即不需要重启系统 
hostname命令可以设置系统的hostname 
#hostname newname 
newname即要设置的新的hostname,运行后立即生效,但是在系统重启后会丢失所做的修改,如果要永久更改系统的hostname,就要修改相关的设置文件。 

我开始在测试的时候,只修改/etc/hosts,里面添加 192.168.1.61 blog.infernor.net blog,而/etc/sysconfig/network维持原状,也就是里面的HOSTNAME=localhost.localdomain。我重启系统后居然发现hostname给修改成了blog.infernor.net。这样看的话,倒真觉得/etc/hosts是hostname的配置文件。后来终于在/etc/rc.d/rc.sysinit这个启动脚本里发现了问题的所在。 
rc.sysinit文件里一开始就设置了hostname 
if [ -f /etc/sysconfig/network ]; then 
. /etc/sysconfig/network 
fi 
if [ -z "$HOSTNAME" -o "$HOSTNAME" = "(none)" ]; then 
HOSTNAME=localhost 
fi 
确实使用了/etc/sysconfig/network里的hostname值。不过后面还有一段关于设置hostname的 
ipaddr= 
if [ "$HOSTNAME" = "localhost" -o "$HOSTNAME" = "localhost.localdomain" ] 
; then 
ipaddr=$(ip addr show to 0/0 scope global | awk '/[[:space:]]inet 
/ { print gensub("/.*","","g",$2) }') 
if [ -n "$ipaddr" ]; then 
eval $(ipcalc -h $ipaddr 2>/dev/null) 
hostname ${HOSTNAME} 
fi 
fi 
脚本判断hostname是否为localhost或者localhost.localdomain,如果是的话,将会使用接口IP地址对应的 hostname来重新设置系统的hostname。问题就出在这里,我的/etc/sysconfig/network默认的hostname是 localhost.localdomain,eth0的IP是192.168.1.61,而/etc/hosts里有192.168.1.61的记录。于是就用192.168.1.61这条记录来替换了hostname。 
估计这也是很多人将/etc/hosts误以为是hostname的配置文件的原因。

 

转自

linux的hostname(主机名)修改详解_LINUX_操作系统_脚本之家
http://www.jb51.net/LINUXjishu/77534.html

posted @ 2017-06-05 16:50  paul_hch  阅读(18790)  评论(0编辑  收藏  举报