【问题标题】:What is the "correct" way to change hostname in CentOS 6.5? (And difference between /etc/hosts and /etc/sysconfig/network scripts)在 CentOS 6.5 中更改主机名的“正确”方法是什么? (以及 /etc/hosts 和 /etc/sysconfig/network 脚本之间的区别)
【发布时间】: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

现在一切正常!...但我不知道为什么...

我的问题分为两部分:

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

【问题讨论】:

    标签: java linux networking centos6 hostname


    【解决方案1】:

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

    hostname MyHost
    sysctl kernel.hostname=MyHost
    

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

    【讨论】:

      猜你喜欢
      • 2014-07-26
      • 1970-01-01
      • 2019-04-20
      • 2014-01-04
      • 1970-01-01
      • 2012-09-26
      • 1970-01-01
      • 1970-01-01
      • 2016-08-26
      相关资源
      最近更新 更多