1. 程式人生 > >幾種修改Linux主機名的方法

幾種修改Linux主機名的方法

在安裝一些系統時,需要修改hostname,比如安裝Hadoop時需要修改主機名,而且主機名不能包含下劃線。

實際上,主機名分三種(命令hostnamectlhostnamectl status可檢視三種主機名):

1) “pretty”主機名,UTF8格式的主機名,這個僅供閱讀,長度無限制;

2) “static”主機名,日常所稱的主機名(traditional hostname)。最多為64個字元,僅可包含“.”、“_”、“-”、“a-z”、“A-Z”和“0-9”這些字元,並且不能以“.”打頭和結尾,也不能兩個“.”連續;

3) “transient

”主機名,核心維護的動態主機名,初始化為“static”主機名,預設為localhost。也為hadoop要求的主機名,它的約束規則同“static”主機名。如果存在“static”主機名,且不是“localhost”,那麼將忽略“transient”主機名。“transient”主機名可被DHCP和mDNS修改。

 

當三種主機名相同時,“hostnamectl status”只會顯示“static”主機名,三種主機名的設定方法:

hostnamectl --pretty set-hostname NAME

hostnamectl --static set-hostname NAME

hostnamectl --transient set-hostname NAME

 

 

hostnamectl修改的主機名,在系統重啟之前會一直有效,而hostname只對當次有效。如果不指定引數,則一次設定三種主機名:

hostnamectl set-hostname NAME

1. 臨時修改主機名

命令hostname不但可以檢視主機名,還可以用它來修改主機名,格式為:hostname 新主機名。

在修改之前9.4.149.11對應的主機名為hadoop_10202,而9.4.149.6對應的主機名為hadoop_10203。兩者的主機名均帶有下劃線,因此需要修改。為求簡單,僅將原下劃線去掉:

hostname hadoop10202

hostname hadoop10203

 

經過上述修改後,類似於修改環境變數,只臨時有效,還需要修改相應的系統配置檔案,以永久有效。

2. 永久修改主機名

不同的Linux發行版本,對應的系統配置檔案可能不同,SuSE 10.1是/etc/HOSTNAME

# cat /etc/HOSTNAME

hadoop_10202

 

將檔案中的“hadoop_10202”,改成“hadoop10202”。有些Linux發行版本對應的可能是/etc/hostname檔案,有些如CentOS和RedHat同時有/etc/hostname和/etc/sysconfig/network兩個檔案,修改/etc/hostname即可。

需注意:/etc/sysconfig/network的格式和/etc/hostname、/etc/HOSTNAME不同,為:

HOSTNAME=主機名

 

修改之後,需要重啟網絡卡,以使修改生效,執行命令:/etc/rc.d/boot.localnet start(不同系統命令會有差異,這是SuSE上的方法,其它一些可能為:/etc/init.d/network restart或service network restart等),再次使用hostname檢視,會發現主機名變了。

上述方法如果不能永久有效,則可使用hostnamectl修改來修改永久有效。如果還是不行,則可重啟系統以使永久有效。

 

可以通過以下多種方法檢視主機名:

1) hostname命令(也可以用來修改主機名,但當次僅當次會話有效)

2) hostnamectl命令(也可以用來修改主機名,系統重啟前一直有效)

3) cat /proc/sys/kernel/hostname

4) cat /etc/hostname或cat /etc/sysconfig/network(永久性的修改,需要重啟)

5) sysctl kernel.hostname(也可以用來修改主機名,但僅重啟之前有效)


批量修改/etc/hostname工具(其它可參照):

https://github.com/eyjian/libmooon/blob/master/shell/set_hostname.sh

 

3. 區別

方法

效果

hostname

當次登入臨時有效,新登入或重新登入後無效

hostnamectl

系統重啟之前一直有效,重啟後無效

/etc/hostname

只有在系統重啟後才有效