某些背景:
我正在测试我用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
命令
首先我在终端中运行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
现在一切正常!......但我不确定为什么......
我的问题分为两部分:
答案 0 :(得分:0)
设置主机名并将其保存到内核参数。
hostname MyHost
sysctl kernel.hostname=MyHost
或者您也可以在Linux运行级别设置此配置。