机器名管理¶
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
当然了,用前几种即刻生效的方法设置一下便达到目的,毕竟重启这个动作有些大。