【发布时间】:2016-08-24 14:38:08
【问题描述】:
一些背景:
我正在测试我用 Java 编写的 LTTng(Linux 跟踪工具)控制视图插件。是的,我知道 LTTng 安装在 Eclipse 中时会附带一个控制视图,但我想玩。
我的插件几乎是启动和停止按钮,它们调用 lttng 终端命令来启动和停止跟踪。 GUI 打印出跟踪的状态(启用、禁用、暂停、运行)、跟踪节点的主机名和当前跟踪名称(如果正在运行)。这篇文章涉及获取跟踪机器的主机名(现在让我们关注本地机器)。
我的主机名理解:
根据我在谷歌上搜索的信息,在 CentOS 中有三个地方显示主机名(我相信还有更多,但这些是重要的):
-
/etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
-
/etc/sysconfig/网络
网络=是
主机名=本地主机
-
hostname终端中的命令- 返回“本地主机”
首先我在终端运行hostname newHostName。不带参数运行hostname 会打印回“newHostName”。但是,一旦我重新启动,主机名将设置回 /etc/sysconfig/network 文件中的任何内容(默认为“localhost”)。所以接下来,我更改了 /etc/sysconfig/network 并重新启动。现在 /etc/sysconfig/network 文件中的“newHostName”是正确的,当我从终端运行主机名命令时,返回“newHostName”。耶!
问题:
当只是更改 /etc/sysconfig/network 文件时,我的插件会在 InetAddress.getLocalHost().getHostName(); 行上抛出一个 UnknownHostException
所以我将 /etc/hosts 文件更改为以下内容:
127.0.0.1 newHostName localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
现在一切正常!...但我不知道为什么...
我的问题分为两部分:
- 在 CentOS 中更改主机名的“正确”方法是什么? (我在 CentOS 6.5 上)
- /etc/hosts 和 /etc/sysconfig/network 文件有什么区别?
【问题讨论】:
标签: java linux networking centos6 hostname