linux $HOSTNAME(Linux是什么软件)
各位老铁们,大家好,今天由我来为大家分享linux $HOSTNAME,以及Linux是什么软件的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!
linux的hostname主机名修改详解
Linux操作系统的hostname是一个kernel变量,可以通过hostname命令来查看本机的hostname。也可以直接cat/proc/sys/kernel/hostname查看。
#hostname
#cat/proc/sys/kernel/hostname
上面两种输出结果相同。
修改运行时Linux系统的hostname,即不需要重启系统
hostname命令可以设置系统的hostname
#hostname newname
newname即要设置的新的hostname,运行后立即生效,但是在系统重启后会丢失所做的修改,如果要永久更改系统的hostname,就要修改相关的设置文件。
永久更改Linux的hostname
man hostname里有这么一句话,”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里没有这个文件,而是由/etc/rc.d/rc.sysinit这个脚本负责设置系统的hostname,它读取/etc/sysconfig/network这个文本文件,RedHat的hostname就是在这个文件里设置。
所以,如果要永久修改RedHat的hostname,就修改/etc/sysconfig/network文件,将里面的HOSTNAME这一行修改成HOSTNAME=NEWNAME,其中NEWNAME就是你要设置的hostname。
Debian发行版的hostname的配置文件是/etc/hostname。
修该配置文件后,重启系统就会读取配置文件设置新的hostname。
hostname与/etc/hosts的关系
很过人一提到更改hostname首先就想到修改/etc/hosts文件,认为hostname的配置文件就是/etc/hosts。其实不是的。
hosts文件的作用相当如DNS,提供IP地址到hostname的对应。早期的互联网计算机少,单机hosts文件里足够存放所有联网计算机。不过随着互联网的发展,这就远远不够了。于是就出现了分布式的DNS系统。由DNS服务器来提供类似的IP地址到域名的对应。具体可以man hosts。
Linux系统在向DNS服务器发出域名解析请求之前会查询/etc/hosts文件,如果里面有相应的记录,就会使用hosts里面的记录。/etc/hosts文件通常里面包含这一条记录
127.0.0.1 localhost.localdomain localhost
hosts文件格式是一行一条记录,分别是IP地址 hostname aliases,三者用空白字符分隔,aliases可选。
127.0.0.1到localhost这一条建议不要修改,因为很多应用程序会用到这个,比如sendmail,修改之后这些程序可能就无法正常运行。
修改hostname后,如果想要在本机上用newhostname来访问,就必须在/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
这样,我就可以通过blog或者blog.infernor.net来访问本机。
从上面这些来看,/etc/hosts于设置hostname是没直接关系的,仅仅当你要在本机上用新的hostname来访问自己的时候才会用到/etc/hosts文件。两者没有必然的联系。
RHEL还有个问题。
我开始在测试的时候,只修改/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的配置文件的原因。
hostname带选项查询
hostname的-s-f-i等等选项都用到了/etc/hosts或者DNS系统,跟我们讨论的hostname有点远了,也容易产生误会。具体可以man hostname查看。
linux下/etc/hosts 和hostname文件的区别
hostname与/etc/hosts的关系
很过人一提到更改hostname首先就想到修改/etc/hosts文件,认为hostname的配置文件就是/etc/hosts。其实不是的。
hosts文件的作用相当如DNS,提供IP地址到hostname的对应。早期的互联网计算机少,单机hosts文件里足够存放所有联网计算机。不过随着互联网的发展,这就远远不够了。于是就出现了分布式的DNS系统。由DNS服务器来提供类似的IP地址到域名的对应。具体可以man hosts。
Linux系统在向DNS服务器发出域名解析请求之前会查询/etc/hosts文件,如果里面有相应的记录,就会使用hosts里面的记录。/etc/hosts文件通常里面包含这一条记录
127.0.0.1 localhost.localdomain localhost
hosts文件格式是一行一条记录,分别是IP地址 hostname aliases,三者用空白字符分隔,aliases可选。
127.0.0.1到localhost这一条建议不要修改,因为很多应用程序会用到这个,比如sendmail,修改之后这些程序可能就无法正常运行。
修改hostname后,如果想要在本机上用newhostname来访问,就必须在/etc/hosts文件里添加一条newhostname的记录。比如我的eth0的IP是192.168.1.61,我将hosts文件修改如下:
#hostname域名
# cat/etc/hosts
127.0.0.1 localhost.localdomain localhost
192.168.1.61域名 blog
这样,我就可以通过blog或者域名来访问本机。
从上面这些来看,/etc/hosts于设置hostname是没直接关系的,仅仅当你要在本机上用新的hostname来访问自己的时候才会用到/etc/hosts文件。两者没有必然的联系。
RHEL还有个问题。
我开始在测试的时候,只修改/etc/hosts,里面添加 192.168.1.61域名,而/etc/sysconfig/network维持原状,也就是里面的HOSTNAME=localhost.localdomain。我重启系统后居然发现hostname给修改成了域名。这样看的话,倒真觉得/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的配置文件的原因。
hostname带选项查询
hostname的-s-f-i等等选项都用到了/etc/hosts或者DNS系统,跟我们讨论的hostname有点远了,也容易产生误会。具体可以man hostname查看。
----------------------------------------
总结一下修改主机名最安全的方法:
1.停止与主机名相关的软件运行,比如mysql。
2.先使用 hostname newname设置主机名。
3.在/etc/hosts中修改或增加 ip newname行,并检查原来127.0.0.1行localhost回环的设置。
4.在/etc/sysconfig/network中修改HOSTNAME=newname。
5.重新启动机器并确认是否修改成功。
Linux中使用hostname命令修改主机名称非常简单
在Linux中修改主机名其实是一件非常容易的事情,但网上有些帖子在这一块都说得很复杂,诸如修改什么配置文件之类的等等,用hostname这个命令我们就可以很轻易地修改了。
我们直接运行hostname可以查看目前的主机名称,要查看hostname的其它命令参数,运行hostname-h如下:
复制代码代码如下:
Usage: hostname [-v]{hostname|-F file} set hostname(from file)
domainname [-v]{nisdomain|-F file} set NIS domainname(from file)
hostname [-v] [-d|-f|-s|-a|-i|-y|-n] display formatted name
hostname [-v] display hostname
hostname-V|–version|-h|–help print info and exit
dnsdomainname=hostname-d,{yp,nis,}domainname=hostname-y
-s,–short short host name
-a,–alias alias names
-i,–ip-address addresses for the hostname
-f,–fqdn,–long long host name(FQDN)
-d,–domain DNS domain name
-y,–yp,–nis NIS/YP domainname
-F,–file read hostname or NIS domainname from given file
This command can read or set the hostname or the NIS domainname. You can
also read the DNS domain or the FQDN(fully qualified domain name).
Unless you are using bind or NIS for host lookups you can change the
FQDN(Fully Qualified Domain Name) and the DNS domain name(which is
part of the FQDN) in the/etc/hosts file.
看到-v的用法了吗?修改主机名命令如下:
复制代码代码如下:
hostname-v新的主机名
这样就可以了,是不是非常地简单?