如何linux修改hosts文件name

发布时间:日
阅读:7085次
国内常见的LinuxVPS控制面板有两种,分别是SolusVM 和 XenSystem ,在这两个控制面板系统上运行的VPS主机名会在下一次重启时更改为与面板上设置的主机名一样,如何自定义VPS的主机名呢?一、利用控制面板首先我们看看两种控制面板的主机名修改处。1、SoulsVM2、XenSystem二、在SSH里快速修改主机名1、查看当前主机名hostname
#直接执行该命令,查看当前主机名2、修改主机名为www.kwx.gdhostname www.kwx.gd黄色部分可以根据自己实际情况修改,直接回车保存即可。三、开机时自动修改主机名如果有特殊需要,可以在SolusVM 和 XenSystem内修改主机名,让VPS重启后自动修改,或通过Linux开机软件自启功能执行命令。1、编辑相关文件vi /etc/rc.d/rc.local2、添加一行命令hostname www.kwx.gd到该文件最下方,另起一行填入以上代码,黄色部分请自行修改。保存后,系统会在下次开机时自动执行该命令。
VPS买回来,装好系统,HOSTNAME是MyVPS,然后到面板重启后就变成MyVPSXXX了……
似乎这样的话,用hostname -i,就提示找不到IP……还要修改hosts文件吧!
添加新评论 &
: 我还不懂耶,为什么要绑域名?
: 学习了。。。
: 一直死循环,总是不出第二盘 free pe size 就没有20G。。。哭 什么鬼
: 很不错的文章!
: 站长说的很好
: 为毛你们的网站加载速度都比我的快,。。
: 锐速的Linux版本,学习了解一下,虽然不是很懂~
: 我们的服务器也是用的这个控制面板,现在发现数据库文件管理和数据库管理连接不进去,总是提示连接超时。
: 很不错,谢谢。查看: 1771|回复: 2
vps hostname修改的问题
主题广告币积分
Affiliate Newbie
高级会员, 积分 1288, 距离下一级还需 1912 积分
高级会员, 积分 1288, 距离下一级还需 1912 积分
以上打格仔部分,就是购买vps时填的hostname , 随便填的, (xxx指代我填写的)。debian7-32bit
客服要我改hostname , 我在 solusvm , ssh ,&&还有以下图的红圈部分修改了。重启
solusvm , ssh 查看已修改成功, 第二个图修改了 还是显示以前的hostname, 怎么修改?
ps, bandwagonhost 在KiwiVM控制面板修改了hostname , 其他也跟着改,这个真麻烦
本帖子中包含更多资源
才可以下载或查看,没有帐号?
主题广告币积分
中级会员, 积分 1013, 距离下一级还需 187 积分
中级会员, 积分 1013, 距离下一级还需 187 积分
你反问 客服怎么改啊
我也纳闷,买时vps hostname随便填的(),又没有拿来做什么,商家偏要我改。&
卖科学上网 收售BTC比特币代付
主题广告币积分
Affiliate Newbie
高级会员, 积分 1288, 距离下一级还需 1912 积分
高级会员, 积分 1288, 距离下一级还需 1912 积分
你反问 客服怎么改啊
我也纳闷,买时vps hostname随便填的(),又没有拿来做什么,商家偏要我改。
Powered by Discuz查看:2423|回复:6
使用的是centOS系统,修改了 /etc/sysconfig/network中的HOSTNAME结果重启之后,又变成了以前的名字,这是为什么呢?
助理工程师
cat /etc/sysconfig/network 里的HOSTNAME是否是你设定的主机名。是不是你更改后未保存。
先修改/etc/sysconfig/network
chattr +i /etc/sysconfig/network
这样就不会变了;P1
引用:原帖由 dn833 于
17:40 发表
先修改/etc/sysconfig/network
chattr +i /etc/sysconfig/network
这样就不会变了;P1 那这样,以后再改还能改不能了?
当然可以了,想改的时候chattr -i就是了
小微企业IT帮!我们没有什么不同~ ...
引用:原帖由 dn833 于
09:00 发表
当然可以了,想改的时候chattr -i就是了 这样的确就不会自动修改了&&不过按理来讲不科学啊&&如果楼主真的修改该文件并保存&&是什么原因导致系统自动改回原名的?
引用:原帖由 贵在坚持 于
12:23 发表
这样的确就不会自动修改了&&不过按理来讲不科学啊&&如果楼主真的修改该文件并保存&&是什么原因导致系统自动改回原名的? 我发现,我配置静态IP的时候,如果修改hostname为aaa,如果我需要上网改成动态IP,那么该虚拟机的hostname又会变成之前的bbb,这是为什么呢?Posts - 685,
Articles - 0,
Comments - 1354
10:17 by 潇湘隐者, ... 阅读,
当我觉得对Linux系统下修改hostname已经非常熟悉的时候,今天碰到了几个个问题,这几个问题给我好好上了一课,很多知识点,当你觉得你已经掌握的时候,其实你了解的还只是皮毛。技术活,切勿浅尝则止!
实验环境:Red Hat Enterprise Linux Server release 5.7 (Tikanga) ,其它版本Linux可能有所不同。请以实际环境为准。
其实我多次修改过hostname,一般只需要修改 /etc/hosts 和 /etc/sysconfig/network 两个文件下相关配置即可。但是,今天我遇到了两个问题:
&& 问题1: 为什么/etc/sysconfig/network配置文件中HOSTNAME为localhost.localdomain,但是显示的hostname为po-a,那到底hostname的配置值放在哪里?
1: [root@po-a ~]# more /etc/hosts 2: # Do not remove the following line, or various programs 3: # that require network functionality will fail. 4: 127.0.0.1 localhost.localdomain localhost 5: ::1 localhost6.localdomain6 localhost6 6: [root@po-a ~]# more /etc/sysconfig/network 7: NETWORKING=yes 8: NETWORKING_IPV6=yes 9: HOSTNAME=localhost.localdomain
有图有真相,免得大家不相信这个现象,当我第一次碰到这种特殊情况时,我也非常纳闷。Google了一些资料加上自己的实践才弄明白
&&& 问题2: 修改了hostname后,如何使其立即生效而不用重启操作系统。
&&& 问题3: 修改hostname有几种方式?
&&& 问题4: hostname跟/etc/hosts 下配置有关系吗?
&&& 问题5: 如何查看hostname的值,以那个为准?
问题1解答:我一直以为hostname的值配置在/etc/sysconfig/network中,这个文件里面HOSTNAME配置为啥,hostname值就是啥。但是为什么出现上面那种情况呢?难道/etc/sysconfig/network
&& 不是hostname的配置文件,难道还另有其它配置文件?于是我当时实验了一下修改了/etc/sysconfig/network文件中HOSTNAME为DB-Server,发现
hostname的值依然没有变化,于是重启了计算机
1: "/etc/sysconfig/network" 3L, 66C written
2: -a ~]# hostname
4: -a ~]# more /proc/sys/kernel/hostname
6: -a ~]# sysctl kernel.hostname
7: ostname = po-a.
9: -a ~]# reboot
&&& 重启过后发现居然hostname变为DB-Server了,也就是说修改配置文件/etc/sysconfig/network下的HOSTNAME生效了。那么也就是说应该是有人修改过 kernel.hostname,请看下面实验
1: [root@DB-Server ~]# more /etc/sysconfig/network
3: NETWORKING=yes
5: NETWORKING_IPV6=yes
7: HOSTNAME=DB-Server.localdomain
9: [root@DB-Server ~]# echo Test & /proc/sys/kernel/hostname
11: [root@DB-Server ~]# more /etc/proc/sys/kernel/hostname
13: /etc/proc/sys/kernel/hostname: No such file or directory
15: [root@DB-Server ~]# more /proc/sys/kernel/hostname
19: [root@DB-Server ~]# /etc/init.d/network restart
21: Shutting down interface eth0: [ OK ]
23: Shutting down loopback interface: [ OK ]
25: Bringing up loopback interface: [ OK ]
27: Bringing up interface eth0:
29: Determining IP information for eth0... done.
31: [ OK ]
33: [root@DB-Server ~]# hostname
37: [root@DB-Server ~]#
注意:其实 /etc/init.d/network restart 没有什么用。只是当时实验时以为必须重启网络服务。
在SecureCRT新建克隆一个会话发现hostanme已经从DB-Server变为Test了,但是/etc/sysconfig/network的值还是DB-Server.localdomain,并没有变为Test。
1: [root@Test ~]# more /etc/sysconfig/network
3: NETWORKING=yes
5: NETWORKING_IPV6=yes
7: HOSTNAME=DB-Server.localdomain
9: [root@Test ~]# hostname
13: [root@Test ~]# more /etc/hosts
15: # Do not remove the following line, or various programs
17: # that require network functionality will fail.
19: 127.0.0.1 localhost.localdomain localhost
21: ::1 localhost6.localdomain6 localhost6
23: [root@Test ~]# more /proc/sys/kernel/hostname
27: [root@Test ~]#
但是如果重启系统后hostname会变为DB-Server,Google了一些英文文档资料才知道,hostname是Linux系统下的一个内核参数,它保存在/proc/sys/kernel/hostname下,但是它的值是Linux启动时从rc.sysinit读取的。
hostname is a kernel parameter which stores hostname of the system. Its location is"/proc/sys/kernel/hostname"
The value for this parameter is loaded to kernel by rc.sysinit file during the boot process.
而/etc/rc.d/rc.sysinit中HOSTNAME的取值来自与/etc/sysconfig/network下的HOSTNAME,代码如下所示,至此,我们可以彻底明白了。
HOSTNAME=`/bin/hostname`
HOSTTYPE=`uname -m`
unamer=`uname -r`
if [ -f /etc/sysconfig/network ]; then
. /etc/sysconfig/network
if [ -z "$HOSTNAME" -o "$HOSTNAME" = "(none)" ]; then
&&& HOSTNAME=localhost
结论:/etc/sysconfig/network 确实是hostname的配置文件,hostname的值跟该配置文件中的HOSTNAME有一定的关联关系,但是没有必然关系,hostname的值来自内核参数/proc/sys/kernel/hostname,如果我通过命令sysctl kernel.hostname=Test修改了内核参数,那么hostname就变为了Test了。
问题2: 修改了hostname后,如何使其立即生效而不用重启操作系统。
&&& 方法1:修改了/etc/sysconfig/network下的HOSTNAME后,然后使用echo& servername & /proc/sys/kernel/hostname。
&&&&&&&& [root@DB-Server ~]# echo Test &/proc/sys/kernel/hostname
&&&&&&&&& 注意当前会话还是不会变化,但是后续新建会话则会生效。
&&& 方法2:修改了/etc/sysconfig/network下的HOSTNAME后,然后使用sysctl kernel.hostname命令使其立即生效
&&&&&&& [root@DB-Server ~]# sysctl kernel.hostname=Test2
&&&&&&& kernel.hostname = Test2
注意当前会话还是不会变化,但是后续新建会话会生效。
&&& 方法3:修改了/etc/sysconfig/network下的HOSTNAME后,然后使用hostname命令使其生效
&&&&&&& [root@Test ~]# hostname DB-Server
&&&&&&& 注意当前会话还是不会变化,但是后续新建会话会生效。
&&& 其实呢,这几种方式只是结合永久性修改和临时性修改hostname,使其不必重启Linux服务器,哈哈,不知道你明白没。
问题3: 修改hostname有几种方式?
&&& 1:& hostname DB-Server&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& --运行后立即生效(新会话生效),但是在系统重启后会丢失所做的修改
&&& 2:& echo DB-Server& & /proc/sys/kernel/hostname&&&&&&&&& --运行后立即生效(新会话生效),但是在系统重启后会丢失所做的修改
&&& 3: sysctl kernel.hostname=DB-Server&&&&&&&&&&&&&&&&&&&&& --运行后立即生效(新会话生效),但是在系统重启后会丢失所做的修改
&&& 4: 修改/etc/sysconfig/network下的HOSTNAME变量&&&&&&&&&&&& --需要重启生效,永久性修改。
问题4: hostname跟/etc/hosts 下配置有关系吗?
&&&&& 如果从我上面的实验来看,其实hostname跟/etc/hosts下的配置是没有关系的。hostname的修改、变更完全不依赖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也不是说跟/etc/hosts一点关系都没有。在/etc/rc.d/rc.sysinit中,有如下逻辑判断,当hostname为localhost后localhost.localdomain时,将会使用接口IP地址对应的hostname来重新设置系统的hostname。
&&&&&&& # In theory there should be no more than one network interface active
&&&&&&& # this early in the boot process -- the one we're booting from.
&&&&&&& # Use the network address to set the hostname of the client. This
&&&&&&& # must be done even if we have local storage.
&&&&&&& 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
我们来实验一下吧,修改hosts、network文件,修改后的值如下所示:
[root@localhost ~]# more /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
::1 localhost.localdomain localhost
127.0.0.1 localhost.localdomain localhost
192.168.244.128 DB-Server.localdomain DB-Server
[root@localhost& ~]# more /etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=yes
HOSTNAME=localhost.localdomain
重启系统后,我们再截图看看情况:
&&& 所以这也是有时候人们以为hostname的值跟hosts文件有关系的缘故。
问题5: 如何查看hostname的值,以那个为准?
[root@DB-Server ~]# hostname
[root@DB-Server ~]# more /proc/sys/kernel/hostname
[root@DB-Server ~]# more /etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=yes
HOSTNAME=localhost.localdomain
&& 以那个为准呢,如果你理解了前面4个问题,那么理解这个问题就很简单了。
参考资料:}

我要回帖

更多关于 为什么 更改hostname 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信