linux修改主机名hostname

Linux 2016-09-01

不为什么,就是要看着舒服。

起步

程序员看到不符合的东西就会想办法改善它,比如这个主机名

285637472772175705.jpg

通过# hostname newname命令指示临时修改主机名,重启后就无效了。

debain系

debain/ubuntu 系统只要修改/etc/hostname就可以了。文字要求不要中文和空格。

20160901162119.png

用vim修改文件后重启生效。

RedHat系

需要修改/etc/sysconfig/network/etc/hosts文件

# cat /etc/sysconfig/network
NETWORKING="yes"
GATEWAYDEV="venet0"
NETWORKING_IPV6="yes"
IPV6_DEFAULTDEV="venet0"
HOSTNAME="localhost.localdomain"

修改network的HOSTNAME项。点前面是主机名,点后面是域名。没有点就是主机名。比如:HOSTNAME="newname"

# cat /etc/hosts
127.0.0.1 localhost.localdomain localhost
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

本地主机那行加上新加的主机名:127.0.0.1 newname localhost ...重启生效。

centos6

一般只需要修改 /etc/hosts/etc/sysconfig/network 两个文件下相关配置即可。在centos6上我重启后发现两个文件又被改回去了。主机名也没变化。通过sysctl 修改kernel.hostname可以解决。

# sysctl kernel.hostname
kernel.hostname = localhost.localdomain

修改:

# sysctl kernel.hostname=newname
kernel.hostname = newname

重新打开shell就变成如下hostname了newname

过后,重启系统,主机名又被改为localhost了。主机名究竟是由哪个地方决定的。不是hostname的配置文件,难道还另有其它配置文件?于是我当时看了下/proc/sys/kernel/hostname

# cat /proc/sys/kernel/hostname
localhost.localdomain

改了文件重启还是无效。看来这并不是取决定因素。找找资料才知道,hostname只是作为一个内核参数,配置文件也确实是/proc/sys/kernel/hostname,不信你看/etc/rc.d/rc.sysinit

20160901164706.png

所以,通过命令sysctl kernel.hostname=newname修改了内核参数,无需重启便可生效,重启反而白白修改了。


本文由 hongweipeng 创作,采用 知识共享署名 3.0,可自由转载、引用,但需署名作者且注明文章出处。

如果对您有用,您的支持将鼓励我继续创作!