1.linux系統在啓動階段,init進程會調用shell腳本文件/etc/rc.d/rc.sysinit,而rc.sysinit會去讀取/etc/sysconfig/network中HOSTNAME項作爲主機名稱。
在linux啓動後,機器的主機名會放到內存虛擬文件系統/proc/sys/kernel/hostname文件中。因此,修改/etc/sysconfig/network中的主機名可以永久生效,但是需要重啓機器纔可以。
相應地,修改/proc/sys/kernel/hostname中主機名,可以立即生效,但是機器重啓後主機名將會還原回/etc/sysconfig/network中的主機名。
備註:在不同的linux發行版本中,可能涉及到文件路徑不一樣。Debian發行版的hostname的配置文件是/etc/hostname。
2.修改主機名幾種方法
(1)新會話立即生效,但是重啓機器後失效
hostname newhostname #修改的是內存中的主機名
(2)新會話立即生效,但是重啓機器後失效
echo newhostname > /proc/sys/kernel/hostname #修改的是內存中的主機名
(3)新會話立即生效,但是重啓機器後失效
sysctl kernel.hostname=newhostname #修改的是內存中的主機名
(4)重啓機器纔會生效
修改/etc/sysconfig/network文件中的HOSTNAME項,是重啓機器纔會生效,不是重啓網絡服務生效哦
(5)新會話立即生效,且重啓機器後也生效
就是用(4)配合(1)(2)(3)中的任何一個就達到目的了
CentOS7下修改主機名
第一種:hostname 主機名
hostname 主機名稱
這種方式,只能修改臨時的主機名,當重啓機器後,主機名稱又變回來了。
第二種:hostnamectl set-hostname <hostname>
命令行中輸入
hostnamectl set-hostname <主機名>
使用這種方式修改,可以永久性的修改主機名稱!