机器名管理

hostname命令

Linux 提供了一个专门用于设置机器名的命令: hostname ,用法非常简单。

查看当前机器名:

$ hostname
bee

设置机器名:

$ hostname ant

确认机器名已经修改完毕:

$ hostname
ant

hostname 命令其实是通过 gethostname 以及 sethostname 系统调用 设置机器名的。 如果需要在程序中管理机器名,可以直接调用这两个 系统调用 。 关于系统调用用法,请查看 man 手册页:

$ man 2 gethostname

hostname 命令修改机器名 即刻生效,但重启后失效

sysctl命令

机器名其实是一个内核参数,因此可以用 sysctl 命令设置。查看当前机器名:

$ sysctl kernel.hostname
kernel.hostname = bee

设置机器名:

$ sysctl kernel.hostname=ant
kernel.hostname = ant

确认机器名已经修改完毕:

$ sysctl kernel.hostname
kernel.hostname = ant

同样,sysctl 命令修改机器名 即刻生效,但重启后失效

proc伪文件系统

Linux 将内核参数暴露在 proc 伪文件系统,因此可以通过读写文件来操作。

查看当前机器名:

$ cat /proc/sys/kernel/hostname
bee

设置机器名:

$ echo 'ant' > /proc/sys/kernel/hostname

确认机器名已经修改完毕:

$ cat /proc/sys/kernel/hostname
ant

同样,这种设置方式 即刻生效,但重启后失效

配置文件

前面介绍的三种方法都 即刻生效,重启失效 ,因为这些方法本质都是 修改内核参数 。 那么,有办法做到重启不失效吗?

这就需要思考一个问题:内核参数从何而来?——答案是 配置文件Linux 下,机器名一般写在配置文件里,系统启动后,从配置文件读取并设置对应的内核参数。

不同的 Linux 发行版,配置文件略有区别。以 Debian 系列为例,只需修改 /etc/hostname 文件即可:

$ echo 'bee' > /etc/hostname

修改完毕后,重启机器即可永久生效:

$ reboot

当然了,用前几种即刻生效的方法设置一下便达到目的,毕竟重启这个动作有些大。

下一步

订阅更新,获取更多学习资料,请关注我们的 微信公众号

../../_images/wechat-mp-qrcode.png

小菜学编程

微信打赏