Linux修改主機名(靜態主機名、臨時主機名)
背景
通常情況下Linux在安裝時會設定主機名、root密碼等相關引數,但安裝後的使用過程中或許你需要修改主機名,本文講述如何修改主機名,包括臨時修改和永久修改。
檢視主機名
原生態的Linux一般自帶兩個命令:hostname、hostnamectl用於檢視(也可修改)主機名,如下:
[root@zavier2 ~]<20180919 11:18:05># hostname
zavier2
[root@zavier2 ~]<20180919 11:18:08># hostnamectl
Static hostname: zavier2
Icon name: computer-vm
Chassis: vm
Machine ID: e3db3fd526054e28be654ab8fd75d995
Boot ID: 1ad233c0110e4035b14e13729677b7e0
Virtualization: vmware
Operating System: Red Hat Enterprise Linux Server 7.2 (Maipo)
CPE OS Name: cpe:/o:redhat:enterprise_linux:7.2:GA:server
Kernel: Linux 3.10.0-327.36.3.el7.x86_64
Architecture: x86-64
主機名分類
基於上面命令,我們可以進一步思考是否可以修改主機名呢?是否用hostname、hostnamectl這兩條命令就能修改主機名呢。其實,Linux主機名分為靜態主機名(static hostname)、臨時主機名(transient hostname)以及pretty 主機名(理解為:優雅的主機名),下面將詳細介紹其區別:(摘自man hostnamectl)
- The high-level "pretty" hostname which might include all kinds of special characters (e.g. "Lennart's Laptop");--pretty主機名對字元幾乎沒有限制,可以設定為你喜歡的任意主機名;
- The static hostname which is used to initialize the kernel hostname at boot (e.g. "lennarts-laptop");--靜態主機名用於系統啟動時設定核心引數;儲存於/etc/hostname中。
- The transient hostname which is a default received from network configuration. If a static hostname is set, and is valid (something other than localhost), then the transient hostname is not used.—臨時主機名預設從網路配置中獲取,如果靜態主機名生效,則臨時主機名沒用。
修改臨時主機名
-
通過檢視hostname的man手冊,我們可以看到hostname本身自帶選項可以修改主機名。
hostname [-b|--boot] [-F|--file filename] [hostname]
於是,我們用此命令嘗試,
[root@omp-xygkt01kf ~]<20180919 10:22:05># echo $HOSTNAME
omp-xygkt01kf
[root@omp-xygkt01kf ~]<20180919 10:22:09># hostname testname
[root@omp-xygkt01kf ~]<20180919 10:22:21># cat /proc/sys/kernel/hostname
testname
[root@omp-xygkt01kf ~]<20180919 10:22:25># hostname
testname
[root@omp-xygkt01kf ~]<20180919 10:22:28># hostnamectl
Static hostname: omp-xygkt01kf
Transient hostname: testname
Icon name: computer-vm
Chassis: vm
Machine ID: e3db3fd526054e28be654ab8fd75d995
Boot ID: 811ad648437a4884bfef8d36824d2f55
Virtualization: vmware
Operating System: Red Hat Enterprise Linux Server 7.2 (Maipo)
CPE OS Name: cpe:/o:redhat:enterprise_linux:7.2:GA:server
Kernel: Linux 3.10.0-327.36.3.el7.x86_64
Architecture: x86-64
[root@omp-xygkt01kf ~]<20180919 10:23:02>#
解釋:
由上面hostnamectl的顯示資訊可知,hostname只改變了Transient hostname(臨時主機名)。其原理就是臨時修改了/proc/sys/kernel/hostname檔案(可以用cat /proc/sys/kernel/hostname檢視),懂核心的或許就知道,其檔案是Linux系統啟動時生成的虛擬檔案(proc檔案系統),系統重啟後此hostname又將以靜態hostname覆蓋。
修改靜態主機名
前面講述瞭如何修改臨時主機名及其原理,但是修改後系統重啟又將回到原來的主機名。若想修改主機名永久生效,就需要修改靜態主機名配置檔案:/etc/hostname,如下圖所示:本來的我的主機名為xygzavier01kf,修改後重啟變成zavier2
原理:/etc/hostname 是主機名的配置檔案,Linux系統啟動時去讀取此檔案內容,設定靜態主機名和相關核心引數。
/etc/hosts、/etc/sysconfig/network的作用
有一些文章提到修改主機名是通過修改以上兩個檔案實現,今天測試一下,其實不然。
/etc/hosts是配置主機名靜態查詢表,主要是用於網路訪問訪問域名時的地址對映。其配置包括三部分:
IP地址 主機名 主機名別名
/etc/sysconfig/network對針對本計算機的,是給計算機起的一個名字,是計算機的一個標識。
總結
針對靜態主機名的修改,並不是所有的Linux發行版都有/etc/hostname檔案,本人的系統(redhat 7.2)是通過此檔案配置,讀者在設定自己的主機名時,一定要琢磨各種型別主機名、各種命令(hostname、systemctl等)、各種核心引數的嘗試。直到得到自己滿意的答案。本人系統資訊如下:
[root@zavier2 ~]<20180919 11:29:59># uname -a
Linux zavier2 3.10.0-327.36.3.el7.x86_64 #1 SMP Thu Oct 20 04:56:07 EDT 2016 x86_64 x86_64 x86_64 GNU/Linux
相關文章
- linux主機名的修改Linux
- Linux7修改主機IP及主機名Linux
- MAC修改主機名、計算機名Mac計算機
- 簡單修改Linux主機名Linux
- linux 檢視修改主機名Linux
- 如何修改mac 下主機名、電腦名、區域網主機名Mac
- ubuntu修改主機名稱Ubuntu
- Linux中主機名的作用是什麼?如何配置主機名?Linux
- CentOS 7 下修改主機名CentOS
- win10 主機名修改方法_win10怎麼改主機名Win10
- linux修改主機名、關閉防火牆、selinuxLinux防火牆
- linux CentOS6.x 修改主機名(Hostname)LinuxCentOS
- Linux hosts主機名不對Linux
- unknown host 主機名
- 6_Linux修改主機名的兩種方法(20190115)Linux
- Linux中配置網路地址,主機名Linux
- linux22-IP地址和主機名Linux
- Fedora22怎麼更改主機名?Fedora22更改主機名的方法
- 主機名和hosts對映
- Linux基礎命令—顯示主機名hostnameLinux
- Linux基礎命令---顯示主機名hostnameLinux
- 14IP地址、主機名、域名
- ORA-00119&ORA-00130&主機名
- JavaScript 獲取主機名程式碼JavaScript
- centOS修改主機名,重啟後無效解決CentOS
- Linux 中改變主機名的 4 種方法Linux
- Mac電腦名稱和本地區域網主機名?Mac
- [20200109]主機名如何定位IP.txt
- 如何在 Linux 中顯示和設定主機名?Linux
- 自動化運維-修改主機名&hosts檔案指令碼運維指令碼
- Oracle中獲取主機名和IP地址Oracle
- 如何使用Zabbix API批次修正主機名稱API
- centos7和centos6修改主機名(永久生效那種)CentOS
- Solaris 10.5配置主機名、IP地址、閘道器
- 從網址中截去主機名和引數
- MySQL無法啟動重啟竟是因為改了Linux主機名MySqlLinux
- 查詢SQLServer的客戶端IP和主機名SQLServer客戶端
- 如何在Mac 上更改電腦的名稱或本地區域網主機名Mac