一、永久修改
修改/etc/sysconfig/network,在里面指定主機名稱HOSTNAME=
然后執行命令
hostname 主機名
這個時候可以注銷一下系統,再重登錄之后就行了。
或者修改/etc/hosts文件中添加
192.168.2.13 linux ####ip +主機名
然后:
hostname 主機名
這個時候可以注銷一下系統,再重登錄之后
二、臨時修改:
shell下執行:
#hostname 主機名
ctrl+d注銷一下系統,再重登錄
========================================================================
cat /proc/sys/kernel/hostname查看。
#hostname
#cat /proc/sys/kernel/hostname
上面兩種輸出結果相同。
修改運行時Linux系統的hostname,即不需要重啟系統
hostname命令可以設置系統的hostname
#hostname newname
newname即要設置的新的hostname,運行后立即生效,但是在系統重啟后會丟失所做的修改,如果要永久更改系統的hostname,就要修改相關的設置文件。
我開始在測試的時候,只修改/etc/hosts,里面添加 192.168.1.61 blog.infernor.net blog,而/etc/sysconfig/network維持原狀,也就是里面的HOSTNAME=localhost.localdomain。我重啟系統后居然發現hostname給修改成了blog.infernor.net。這樣看的話,倒真覺得/etc/hosts是hostname的配置文件。后來終於在/etc/rc.d/rc.sysinit這個啟動腳本里發現了問題的所在。
rc.sysinit文件里一開始就設置了hostname
if [ -f /etc/sysconfig/network ]; then
. /etc/sysconfig/network
fi
if [ -z "$HOSTNAME" -o "$HOSTNAME" = "(none)" ]; then
HOSTNAME=localhost
fi
確實使用了/etc/sysconfig/network里的hostname值。不過后面還有一段關於設置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,如果是的話,將會使用接口IP地址對應的 hostname來重新設置系統的hostname。問題就出在這里,我的/etc/sysconfig/network默認的hostname是 localhost.localdomain,eth0的IP是192.168.1.61,而/etc/hosts里有192.168.1.61的記錄。於是就用192.168.1.61這條記錄來替換了hostname。
估計這也是很多人將/etc/hosts誤以為是hostname的配置文件的原因。
轉自
linux的hostname(主機名)修改詳解_LINUX_操作系統_腳本之家
http://www.jb51.net/LINUXjishu/77534.html