java - 在 CentOS 6.5 中更改主机名的 "correct"方法是什么? (以及/etc/hosts和/etc/sysconfig/network脚本的区别)

标签 java linux networking centos6 hostname

一些背景:

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

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

我对主机名的理解:

根据我在 Google 上搜索后得知的信息,主机名出现在 CentOS 中的三个位置(我敢肯定还有更多,但这些是重要的):

  • /etc/主机

    127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4

    ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6

  • /etc/sysconfig/network

    NETWORKING=yes

    HOSTNAME=localhost

  • hostname终端命令

    • 返回“本地主机”

首先我跑了hostname newHostName在终端。正在运行 hostname没有参数“newHostName”被打印回来。但是,一旦我重新启动,主机名将设置回/etc/sysconfig/network 文件中的任何内容(默认情况下为“localhost”)。所以接下来,我更改了/etc/sysconfig/network 并重新启动。现在/etc/sysconfig/network 文件中的“newHostName”是正确的,当我从终端运行主机名命令时,“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 文件有什么区别?

最佳答案

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

hostname MyHost
sysctl kernel.hostname=MyHost

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

关于java - 在 CentOS 6.5 中更改主机名的 "correct"方法是什么? (以及/etc/hosts和/etc/sysconfig/network脚本的区别),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36938251/

相关文章:

networking - 向连接到局域网的所有人发送消息

c++ - 连接 UDP 套接字,但仍从其他源接收数据报

java - 如何在 Java swing 中构建点击组件?

linux - 如何在 Oracle Linux 中将内核版本从 6.8 降级到 6.7

java - 使用迭代器对列表进行排序

python - 使用 distutilscross 交叉编译 python native C 扩展,setup.py 不会接受 '-x' 参数

php - 如何更改文件 mime 类型以绕过 php shell 上传?

networking - 是否可以限制从我的 PC 到我的 PC 的网络流量?

java - java中如何结合mock和DI?

java - opengl 窗口在移动/调整大小时卡住