在CentOS 6.5中更改主机名的“正确”方法是什么? (以及/ etc / hosts和/ etc / sysconfig / network脚本之间的区别)

时间:2016-04-29 12:21:31

标签: java linux networking centos6 hostname

某些背景:

我正在测试我用Java编写的LTTng(Linux跟踪工具)控件视图插件。是的,我知道在Eclipse中安装LTTng时会有一个控件视图,但我想玩。

我的插件几乎是启动和停止按钮,它们调用lttng终端命令来启动和停止跟踪。 GUI打印出跟踪的状态(启用,禁用,暂停,运行),跟踪节点的主机名和当前跟踪名称(如果正在运行)。这篇文章涉及获取跟踪机器的主机名(暂时让我们关注本地机器)。

我的主机名理解:

从谷歌搜索后的情况可以看出,在CentOS中有三个地方出现主机名(我相信还有更多,但这些是重要的):

  • 的/ etc /主机

      

    127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4

         

    :: 1 localhost localhost.localdomain localhost6 localhost6.localdomain6

  • 的/ etc / SYSCONFIG /网络

      

    NETWORKING =是

         

    HOSTNAME =本地主机

  • 终端

    中的
  • hostname命令

    • 返回“localhost”

首先我在终端中运行hostname newHostName。将打印不带参数“newHostName”的hostname运行。但是,重新启动后,主机名将重新设置为/ etc / sysconfig / network文件中的任何内容(默认情况下为“localhost”)。所以接下来,我改变了/ etc / sysconfig / network并重新启动了。现在“newHostName”在/ etc / sysconfig / network文件中是正确的,当我从终端运行hostname命令时,返回“newHostName”。耶!

问题:

当只更改/ etc / sysconfig / network文件时,我的插件会在行UnknownHostException上抛出InetAddress.getLocalHost().getHostName();

所以我将/ etc / hosts文件更改为以下内容:

  

127.0.0.1 newHostName localhost localhost.localdomain localhost4 localhost4.localdomain4

     

:: 1 localhost localhost.localdomain localhost6 localhost6.localdomain6

现在一切正常!......但我不确定为什么......

我的问题分为两部分:

  1. 在CentOS中更改主机名的“正确”方法是什么? (我在CentOS 6.5上)
  2. / etc / hosts和/ etc / sysconfig / network文件有什么区别?

1 个答案:

答案 0 :(得分:0)

设置主机名并将其保存到内核参数。

hostname MyHost
sysctl kernel.hostname=MyHost

或者您也可以在Linux运行级别设置此配置。