linux的hostname(主機(jī)名)修改詳解
發(fā)布時(shí)間:2013-04-08 15:21:54 作者:佚名
我要評(píng)論

Linux操作系統(tǒng)的hostname是一個(gè)kernel變量,可以通過(guò)hostname命令來(lái)查看本機(jī)的hostname。也可以直接cat /proc/sys/kernel/hostname查看,感興趣的朋友可以參考下本文的linux的hostname修改介紹
Linux操作系統(tǒng)的hostname是一個(gè)kernel變量,可以通過(guò)hostname命令來(lái)查看本機(jī)的hostname。也可以直接cat /proc/sys/kernel/hostname查看。
#hostname
#cat /proc/sys/kernel/hostname
上面兩種輸出結(jié)果相同。
修改運(yùn)行時(shí)Linux系統(tǒng)的hostname,即不需要重啟系統(tǒng)
hostname命令可以設(shè)置系統(tǒng)的hostname
#hostname newname
newname即要設(shè)置的新的hostname,運(yùn)行后立即生效,但是在系統(tǒng)重啟后會(huì)丟失所做的修改,如果要永久更改系統(tǒng)的hostname,就要修改相關(guān)的設(shè)置文件。
永久更改Linux的hostname
man hostname里有這么一句話(huà),”The host name is usually set once at system startup in /etc/rc.d/rc.inet1 or /etc/init.d/boot (normally by reading the contents of a file which contains the host name, e.g. /etc/hostname).” RedHat里沒(méi)有這個(gè)文件,而是由/etc/rc.d/rc.sysinit這個(gè)腳本負(fù)責(zé)設(shè)置系統(tǒng)的hostname,它讀取/etc /sysconfig/network這個(gè)文本文件,RedHat的hostname就是在這個(gè)文件里設(shè)置。
所以,如果要永久修改RedHat的hostname,就修改/etc/sysconfig/network文件,將里面的HOSTNAME這一行修改成HOSTNAME=NEWNAME,其中NEWNAME就是你要設(shè)置的hostname。
Debian發(fā)行版的hostname的配置文件是/etc/hostname。
修該配置文件后,重啟系統(tǒng)就會(huì)讀取配置文件設(shè)置新的hostname。
hostname與/etc/hosts的關(guān)系
很過(guò)人一提到更改hostname首先就想到修改/etc/hosts文件,認(rèn)為hostname的配置文件就是/etc/hosts。其實(shí)不是的。
hosts文件的作用相當(dāng)如DNS,提供IP地址到hostname的對(duì)應(yīng)。早期的互聯(lián)網(wǎng)計(jì)算機(jī)少,單機(jī)hosts文件里足夠存放所有聯(lián)網(wǎng)計(jì)算機(jī)。不過(guò)隨著互聯(lián)網(wǎng)的發(fā)展,這就遠(yuǎn)遠(yuǎn)不夠了。于是就出現(xiàn)了分布式的DNS系統(tǒng)。由DNS服務(wù)器來(lái)提供類(lèi)似的IP地址到域名的對(duì)應(yīng)。具體可以man hosts。
Linux系統(tǒng)在向DNS服務(wù)器發(fā)出域名解析請(qǐng)求之前會(huì)查詢(xún)/etc/hosts文件,如果里面有相應(yīng)的記錄,就會(huì)使用hosts里面的記錄。/etc/hosts文件通常里面包含這一條記錄
127.0.0.1 localhost.localdomain localhost
hosts文件格式是一行一條記錄,分別是IP地址 hostname aliases,三者用空白字符分隔,aliases可選。
127.0.0.1到localhost這一條建議不要修改,因?yàn)楹芏鄳?yīng)用程序會(huì)用到這個(gè),比如sendmail,修改之后這些程序可能就無(wú)法正常運(yùn)行。
修改hostname后,如果想要在本機(jī)上用newhostname來(lái)訪問(wèn),就必須在/etc/hosts文件里添加一條newhostname的記錄。比如我的eth0的IP是192.168.1.61,我將hosts文件修改如下:
#hostname blog.infernor.net
# cat /etc/hosts
127.0.0.1 localhost.localdomain localhost
192.168.1.61 blog.infernor.net blog
這樣,我就可以通過(guò)blog或者blog.infernor.net來(lái)訪問(wèn)本機(jī)。
從上面這些來(lái)看,/etc/hosts于設(shè)置hostname是沒(méi)直接關(guān)系的,僅僅當(dāng)你要在本機(jī)上用新的hostname來(lái)訪問(wèn)自己的時(shí)候才會(huì)用到/etc/hosts文件。兩者沒(méi)有必然的聯(lián)系。
RHEL還有個(gè)問(wèn)題。
我開(kāi)始在測(cè)試的時(shí)候,只修改/etc/hosts,里面添加 192.168.1.61 blog.infernor.net blog,而/etc/sysconfig/network維持原狀,也就是里面的HOSTNAME=localhost.localdomain。我重啟系統(tǒng)后居然發(fā)現(xiàn)hostname給修改成了blog.infernor.net。這樣看的話(huà),倒真覺(jué)得/etc/hosts是hostname的配置文件。后來(lái)終于在/etc/rc.d/rc.sysinit這個(gè)啟動(dòng)腳本里發(fā)現(xiàn)了問(wèn)題的所在。
rc.sysinit文件里一開(kāi)始就設(shè)置了hostname
if [ -f /etc/sysconfig/network ]; then
. /etc/sysconfig/network
fi
if [ -z "$HOSTNAME" -o "$HOSTNAME" = "(none)" ]; then
HOSTNAME=localhost
fi
確實(shí)使用了/etc/sysconfig/network里的hostname值。不過(guò)后面還有一段關(guān)于設(shè)置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,如果是的話(huà),將會(huì)使用接口IP地址對(duì)應(yīng)的 hostname來(lái)重新設(shè)置系統(tǒng)的hostname。問(wèn)題就出在這里,我的/etc/sysconfig/network默認(rèn)的hostname是 localhost.localdomain,eth0的IP是192.168.1.61,而/etc/hosts里有192.168.1.61的記錄。于是就用192.168.1.61這條記錄來(lái)替換了hostname。
估計(jì)這也是很多人將/etc/hosts誤以為是hostname的配置文件的原因。
hostname帶選項(xiàng)查詢(xún)
hostname的-s -f -i等等選項(xiàng)都用到了/etc/hosts或者DNS系統(tǒng),跟我們討論的hostname有點(diǎn)遠(yuǎn)了,也容易產(chǎn)生誤會(huì)。具體可以man hostname查看。
#hostname
#cat /proc/sys/kernel/hostname
上面兩種輸出結(jié)果相同。
修改運(yùn)行時(shí)Linux系統(tǒng)的hostname,即不需要重啟系統(tǒng)
hostname命令可以設(shè)置系統(tǒng)的hostname
#hostname newname
newname即要設(shè)置的新的hostname,運(yùn)行后立即生效,但是在系統(tǒng)重啟后會(huì)丟失所做的修改,如果要永久更改系統(tǒng)的hostname,就要修改相關(guān)的設(shè)置文件。
永久更改Linux的hostname
man hostname里有這么一句話(huà),”The host name is usually set once at system startup in /etc/rc.d/rc.inet1 or /etc/init.d/boot (normally by reading the contents of a file which contains the host name, e.g. /etc/hostname).” RedHat里沒(méi)有這個(gè)文件,而是由/etc/rc.d/rc.sysinit這個(gè)腳本負(fù)責(zé)設(shè)置系統(tǒng)的hostname,它讀取/etc /sysconfig/network這個(gè)文本文件,RedHat的hostname就是在這個(gè)文件里設(shè)置。
所以,如果要永久修改RedHat的hostname,就修改/etc/sysconfig/network文件,將里面的HOSTNAME這一行修改成HOSTNAME=NEWNAME,其中NEWNAME就是你要設(shè)置的hostname。
Debian發(fā)行版的hostname的配置文件是/etc/hostname。
修該配置文件后,重啟系統(tǒng)就會(huì)讀取配置文件設(shè)置新的hostname。
hostname與/etc/hosts的關(guān)系
很過(guò)人一提到更改hostname首先就想到修改/etc/hosts文件,認(rèn)為hostname的配置文件就是/etc/hosts。其實(shí)不是的。
hosts文件的作用相當(dāng)如DNS,提供IP地址到hostname的對(duì)應(yīng)。早期的互聯(lián)網(wǎng)計(jì)算機(jī)少,單機(jī)hosts文件里足夠存放所有聯(lián)網(wǎng)計(jì)算機(jī)。不過(guò)隨著互聯(lián)網(wǎng)的發(fā)展,這就遠(yuǎn)遠(yuǎn)不夠了。于是就出現(xiàn)了分布式的DNS系統(tǒng)。由DNS服務(wù)器來(lái)提供類(lèi)似的IP地址到域名的對(duì)應(yīng)。具體可以man hosts。
Linux系統(tǒng)在向DNS服務(wù)器發(fā)出域名解析請(qǐng)求之前會(huì)查詢(xún)/etc/hosts文件,如果里面有相應(yīng)的記錄,就會(huì)使用hosts里面的記錄。/etc/hosts文件通常里面包含這一條記錄
127.0.0.1 localhost.localdomain localhost
hosts文件格式是一行一條記錄,分別是IP地址 hostname aliases,三者用空白字符分隔,aliases可選。
127.0.0.1到localhost這一條建議不要修改,因?yàn)楹芏鄳?yīng)用程序會(huì)用到這個(gè),比如sendmail,修改之后這些程序可能就無(wú)法正常運(yùn)行。
修改hostname后,如果想要在本機(jī)上用newhostname來(lái)訪問(wèn),就必須在/etc/hosts文件里添加一條newhostname的記錄。比如我的eth0的IP是192.168.1.61,我將hosts文件修改如下:
#hostname blog.infernor.net
# cat /etc/hosts
127.0.0.1 localhost.localdomain localhost
192.168.1.61 blog.infernor.net blog
這樣,我就可以通過(guò)blog或者blog.infernor.net來(lái)訪問(wèn)本機(jī)。
從上面這些來(lái)看,/etc/hosts于設(shè)置hostname是沒(méi)直接關(guān)系的,僅僅當(dāng)你要在本機(jī)上用新的hostname來(lái)訪問(wèn)自己的時(shí)候才會(huì)用到/etc/hosts文件。兩者沒(méi)有必然的聯(lián)系。
RHEL還有個(gè)問(wèn)題。
我開(kāi)始在測(cè)試的時(shí)候,只修改/etc/hosts,里面添加 192.168.1.61 blog.infernor.net blog,而/etc/sysconfig/network維持原狀,也就是里面的HOSTNAME=localhost.localdomain。我重啟系統(tǒng)后居然發(fā)現(xiàn)hostname給修改成了blog.infernor.net。這樣看的話(huà),倒真覺(jué)得/etc/hosts是hostname的配置文件。后來(lái)終于在/etc/rc.d/rc.sysinit這個(gè)啟動(dòng)腳本里發(fā)現(xiàn)了問(wèn)題的所在。
rc.sysinit文件里一開(kāi)始就設(shè)置了hostname
if [ -f /etc/sysconfig/network ]; then
. /etc/sysconfig/network
fi
if [ -z "$HOSTNAME" -o "$HOSTNAME" = "(none)" ]; then
HOSTNAME=localhost
fi
確實(shí)使用了/etc/sysconfig/network里的hostname值。不過(guò)后面還有一段關(guān)于設(shè)置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,如果是的話(huà),將會(huì)使用接口IP地址對(duì)應(yīng)的 hostname來(lái)重新設(shè)置系統(tǒng)的hostname。問(wèn)題就出在這里,我的/etc/sysconfig/network默認(rèn)的hostname是 localhost.localdomain,eth0的IP是192.168.1.61,而/etc/hosts里有192.168.1.61的記錄。于是就用192.168.1.61這條記錄來(lái)替換了hostname。
估計(jì)這也是很多人將/etc/hosts誤以為是hostname的配置文件的原因。
hostname帶選項(xiàng)查詢(xún)
hostname的-s -f -i等等選項(xiàng)都用到了/etc/hosts或者DNS系統(tǒng),跟我們討論的hostname有點(diǎn)遠(yuǎn)了,也容易產(chǎn)生誤會(huì)。具體可以man hostname查看。
相關(guān)文章
Fedora Linux 42 穩(wěn)定版發(fā)布: 帶來(lái)大量新功能和軟件更新
Fedora 42昨日發(fā)布,這是 Red Hat 贊助開(kāi)發(fā)的杰出前沿 Linux 發(fā)行版的最新版,包含大量新功能和軟件更新,使其成為 2025 年上半年發(fā)布的一款出色的 Linux 操作系統(tǒng)之一,內(nèi)2025-04-16如何在Linux查看硬盤(pán)信息? 查看Linux硬盤(pán)大小類(lèi)型和硬件信息的5種方法
使用Linux系統(tǒng)的過(guò)程中,查看和了解硬盤(pán)信息是非常重要的工作,尤其是對(duì)于系統(tǒng)管理員而言,那么在Linux系統(tǒng)中如何查看硬盤(pán)信息?以下是具體內(nèi)容介紹2025-03-12如何在 Linux 中查看 CPU 詳細(xì)信息? 3招輕松查看CPU型號(hào)、核心數(shù)和溫度
在日常運(yùn)維工作中,獲取 CPU 信息是系統(tǒng)運(yùn)維管理員常見(jiàn)的工作內(nèi)容,無(wú)論是為了性能調(diào)優(yōu)、硬件升級(jí)還是僅僅滿(mǎn)足好奇心2025-03-11什么是 Arch Linux? 獨(dú)樹(shù)一幟的Arch Linux發(fā)行版分析
Arch Linux是為簡(jiǎn)化,優(yōu)化,現(xiàn)代化,實(shí)用主義,用戶(hù)中心和多功能性而創(chuàng)建Linux發(fā)行版,究竟是什么讓 Arch 與眾不同?下面我們就來(lái)簡(jiǎn)要解讀2025-02-19如何在Linux環(huán)境下制作 Win11裝機(jī)U盤(pán)?
一直用的linux辦公,想要將筆記本電腦從 Linux 系統(tǒng)切換回 Windows 11,我們可以制作一個(gè)win11裝機(jī)u盤(pán),詳細(xì)如下2025-02-17Rsnapshot怎么用? 基于Rsync的強(qiáng)大Linux備份工具使用指南
Rsnapshot 不僅可以備份本地文件,還能通過(guò) SSH 備份遠(yuǎn)程文件,接下來(lái)詳細(xì)介紹如何安裝、配置和使用 Rsnapshot,包括創(chuàng)建每小時(shí)、每天、每周和每月的本地備份,以及如何進(jìn)2025-02-06Linux Kernel 6.13發(fā)布:附更新內(nèi)容及新特性解讀
Linux 內(nèi)核 6.13 正式發(fā)布,新版本引入了惰性搶占支持,簡(jiǎn)化內(nèi)核搶占邏輯,通過(guò)減少與調(diào)度器相關(guān)的調(diào)用次數(shù),讓內(nèi)核在運(yùn)行時(shí)表現(xiàn)更優(yōu),從而提高效率2025-01-23五大特性引領(lǐng)創(chuàng)新! 深度操作系統(tǒng) deepin 25 Preview預(yù)覽版發(fā)布
今日,深度操作系統(tǒng)正式推出deepin 25 Preview版本,該版本集成了五大核心特性:磐石系統(tǒng)、全新DDE、Treeland窗口合成器、AI For OS以及Distrobox子系統(tǒng)2025-01-18Linux Mint Xia 22.1重磅發(fā)布: 重要更新一覽
Beta 版 Linux Mint“Xia” 22.1 發(fā)布,新版本基于 Ubuntu 24.04,內(nèi)核版本為 Linux 6.8,這次更新帶來(lái)了諸多優(yōu)化和改進(jìn),進(jìn)一步鞏固了 Mint 在 Linux 桌面操作系統(tǒng)領(lǐng)域的2025-01-16LinuxMint怎么安裝? Linux Mint22下載安裝圖文教程
Linux Mint22發(fā)布以后,有很多新功能,很多朋友想要下載并安裝,該怎么操作呢?下面我們就來(lái)看看詳細(xì)安裝指南2025-01-16