Немного предыстории:
Я тестирую плагин просмотра управления LTTng (Linux Trace Tool), который я написал на Java. Да, я знаю, что есть представление управления, которое поставляется с LTTng при установке в Eclipse, но я хотел поиграть.
Мой плагин в значительной степени состоит из кнопок запуска и остановки, которые вызывают команды терминала lttng для запуска и остановки трассировки. Графический интерфейс пользователя выводит на печать состояние трассировки (включена, отключена, приостановлена, выполняется), имя хоста узла трассировки и текущее имя трассировки (если она запущена). Этот пост касается получения имени хоста трассирующей машины (давайте пока сосредоточимся на локальной машине).
Мое понимание имени хоста:
Из того, что я могу сказать после некоторого поиска в Google, есть три места, где имя хоста отображается в CentOS (я уверен, что их больше, но это важные):
- # P6 #
# P7 # # P8 #
- # P9 #
# P10 # # P11 #
hostname
команда в терминале- returns "localhost"
Сначала я запустил hostname newHostName
в терминале. Выполняется hostname
без аргументов "newHostName" печатается обратно. Однако после перезагрузки имя хоста возвращается к тому, что находится в файле / 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
Теперь все работает! ... но не знаю почему ...
Мой вопрос состоит из двух частей:
- Как «правильно» изменить имя хоста в CentOS? (Я использую CentOS 6.5)
- В чем разница между файлами / etc / hosts и / etc / sysconfig / network?