以下操作均时基于 Centos 6.8 操作。

一、现象

在平时工作中,当需要修改主机名时,我们一般会这样操作:

第一步,通过 hostname 命令临时修改主机名。

hostname kwang-test01

第二步,修改配置文件,保证机器重启时主机名不会变。

$ cat /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=kwang-test01
NOZEROCONF=yes

以上操作确实是修改主机名的正确姿势,也能达到预期的效果,但为什么要这样操作呢,知其然也要知其所以然,下面我们来看看原因。

二、透过现象看本质

2.1 hostname 临时修改主机名

当我们执行 hostname <ip> 命令时,会临时修改 Linux Kernel 中一个同为 hostname 的内核参数,而 Linux Kernel 中 hostname 参数保存在 /proc/sys/kernel/hostname 中。

2.2 修改 /etc/sysconfig/network 配置永久修改主机名

有人可能会困惑,为什么永久修改主机名需要修改 /etc/sysconfig/network 的 HOSTNAME 参数?回答这个问题前,先让我们看看 Linux 启动时脚本的一段代码:

HOSTNAME=$(/bin/hostname)

set -m

if [ -f /etc/sysconfig/network ]; then
. /etc/sysconfig/network
fi
if [ -z "$HOSTNAME" -o "$HOSTNAME" = "(none)" ]; then
HOSTNAME=localhost
fi

可以看出 Linux 的启动逻辑:首先会读取 /etc/sysconfig/network 中的 HOSTNAME 参数,然后将系统主机名配置成获取的 HOSTNAME 参数。

注意,我们也说了,只有在 Linux 在启动时才会加载 /etc/sysconfig/network 配置,但平时执行 hostname 命令系统是如何知道主机名临时修改了呢?我们继续往下看。

2.3 更进一步

通过 hostname 命令获取的值跟 /etc/sysconfig/network 文件中的 HOSTNAME 有一定的关联,但是没有必然联系,只有在 Linux 启动时才会与配置文件的 HOSTNAME 值有保持一致,启动相互不影响。进一步了解,我们发现通过 hostname 命令获取的值并不是直接从 /etc/sysconfig/network 获取,而是从 Linux Kernel 的内核参数 /proc/sys/kernel/hostname 获取,这一点我们可以从下面实操看出:

# hostname         //当前主机名
kwang_test01 # cat /proc/sys/kernel/hostname //修改内核参数
kwang_test01 # echo "kwang_test01_change" > /proc/sys/kernel/hostname //修改内核参数
# cat /proc/sys/kernel/hostname
kwang_test01_change # hostname //修改后主机名,发现主机名已修改
kwang_test01_change # cat /etc/sysconfig/network //并发现这个配置的 HOSTNAME 值没有变
NETWORKING=yes
HOSTNAME=kwang-test01
NOZEROCONF=yes

结论:

  • hostname 命令获得的值是从 /proc/sys/kernel/hostname 获取的,与 /etc/sysconfig/network 配置中的 HOSTNAME 没有直接关联;
  • /proc/sys/kernel/hostname 内核参数的初始值在 Linux 启动时从 /etc/sysconfig/network 配置中加载,启动后该值通过 root 账号可以修改。

三、疑惑

最近在遇到一个奇怪的现象,/proc/sys/kernel/hostname 中的值被定时修改了,没有人为操作,系统也没有重启,暂时没有解决,后续解决了更新。

【参考资料】

[1]. https://jaminzhang.github.io/linux/deep-understanding-of-linux-hostname/

Linux hostname介绍的更多相关文章

  1. Linux hostname主机名配置文件/etc/hosts详解

    这篇文章为大家介绍linux hostname主机名配置文件/etc/hosts,包括主机名的用途.配置文件的操作方法等,有需要的朋友,可以参考下 1.什么是Linux主机名 无论在局域网还是INTE ...

  2. 01 Linux入门介绍

    一.Linux 初步介绍 Linux的优点 免费的,开源的 支持多线程,多用户 安全性好 对内存和文件管理优越 系统稳定 消耗资源少 Linux的缺点 操作相对困难 一些专业软件以及游戏支持度不足 L ...

  3. Linux Epoll介绍和程序实例

    Linux Epoll介绍和程序实例 1. Epoll是何方神圣? Epoll但是当前在Linux下开发大规模并发网络程序的热门人选,Epoll 在Linux2.6内核中正式引入,和select类似, ...

  4. Linux入门介绍

    Linux入门介绍 一.Linux 初步介绍 Linux的优点 免费的,开源的 支持多线程,多用户 安全性好 对内存和文件管理优越 系统稳定 消耗资源少 Linux的缺点 操作相对困难 一些专业软件以 ...

  5. Linux 系统目录介绍

    bin : bin 是Binary 二进制的缩写,就是可执行文件了.Bin目录下是用户常用的命令. sbin: 此目录下也是二进制文件 ,不过这里的命令是 超级用户如 root 这样的用户使用的. e ...

  6. Linux命令介绍

    资料链接:(Linux基本命令介绍)http://note.youdao.com/share/?id=36c07917f8d3e6437c1e764c3516a3f2&type=note#/ ...

  7. 1.Linux入门介绍

    1.1 Linux概述 1.1.1 Linux简要介绍 Linux的由来: Linux的内核最初是由芬兰人李纳斯·托瓦茨在上大学的时候编写的一个内核,它是基于Unix操作系统编写的 大多服务器使用的是 ...

  8. Linux SELinux 介绍详解

    Linux SELinux 介绍详解 SElinux 简介 SElinux (Security Enhanced Linux)是由美国国家安全局(NSA)开发的.它已被植入到了Linux系统的内核当中 ...

  9. Linux文件介绍

    Linux文件介绍 Linux 文件属性 可以通过命令ll+文件名,查看文件的具体属性 例如:ll syz.gz 1736706 -rw-r--r--. 1 root root 28 Oct 27 1 ...

随机推荐

  1. 一、冒泡排序Bubble sort

    https://www.cnblogs.com/kkun/archive/2011/11/23/2260312.html#3824357 #include<iostream> #inclu ...

  2. el-input maxlength 不限制长度

    背景: 小鱼最近使用 input输入框时想限制输入的长度, type = "number" 时,限制的长度无效,代码如下 <el-input v-model="fo ...

  3. H5--性能测试(PageSpeed Insights )

    中文网站(不需要翻墙): http://www.googlespeed.cn 主要可实现: 1.测试手机与电脑打开的速度对比. 2.详细的测试结果 3.直观的统计数据,查看页面的共xx个请求.总共大小 ...

  4. Appium自动化测试教程-自学网-monkeyrunner API

    MonkeyRunner API MonkeyRunner工具主要有三个类: MonkeyRunner MonkeyDevice MonkeyImage 官方API文档 :http://www.and ...

  5. 006_Python3 数字(Number)

    1. Python 数字数据类型用于存储数值. 数据类型是不允许改变的,这就意味着如果改变数字数据类型的值,将重新分配内存空间.   以下实例在变量赋值时 Number 对象将被创建: var1 = ...

  6. 2019ICPC南京自我反省

    第一场ICPC,跟第一场CCPC一样,可惜真的可惜. 打完比赛就感觉难受,难受不在于又抱了块铜牌,而是那种能出的题没出的可惜感非常浓重. 开场还是可以的,通过一阵讨论,就大胆猜测了A的规律,然后一发过 ...

  7. Airflow 配置celery+rabbitmq和celery+redis

    Airflow 配置celery+rabbitmq 1.安装celery和rabbitmq组件 pip3 install apache-airflow[celery] pip3 install apa ...

  8. 解决Ubuntu19.04无法安装SecureCRT

    推荐下载SecureCRT的tar包 在ubuntu19.04上安装SecureCRT的时候,报错libssl1.0.0-xxx没有安装 解决办法:下载并安装libssl1.0.0_1.0.1t-1+ ...

  9. linux 查看某个进程内存占用情况命令

    1.先用ps查询进程号 ps -aux|grep 进程名字 2.查看更详细的内存占比 cat /proc/3664/status 返回结果:(其中VmRSS为进程所占用的内存)

  10. codeforces#1120C. Compress String(dp+后缀自动机)

    题目链接: https://codeforces.com/contest/1120/problem/C 题意: 从前往后压缩一段字符串 有两种操作: 1.对于单个字符,压缩它花费$a$ 2.对于末尾一 ...