问题描述
我想更改操作系统主机名,但我不想重新启动。
我编辑了/etc/hostname
,但它需要重新启动才能实现。如何避免这种情况?
最佳解决方法
这很容易。只需点击齿轮图标(位于屏幕右上角),打开“关于此计算机”屏幕(位于齿轮图标)并编辑”Device name”。
或者,在终端中,使用以下命令:
sudo hostname your-new-name
这会将主机名设置为your-new-name,直到重新启动。有关更多信息,请参阅man hostname
和我如何更改计算机名称?。不要在名字中使用_
。
注意
重新启动后,将使用/etc/hostname
中的更改,因此(如您在问题中所述),您仍然应该使用
sudo -H gedit /etc/hostname
(或其他编辑器),以便文件包含主机名。
要测试文件是否设置正确,请运行:
sudo service hostname start
您还应该编辑/etc/hosts
并更改以下内容的行:
127.0.1.1 your-old-hostname
以便它现在包含您的新主机名。 (这是必需的,否则许多命令将停止运行。)
次佳解决方法
Ubuntu 13.04起
hostnamectl
命令是Desktop和Server版本上默认安装的一部分。
它结合了通过hostname
命令设置主机名和编辑/etc/hostname
。除了设置静态主机名,它还可以设置”pretty”主机名,这在Ubuntu中不使用。不幸的是,编辑/etc/hosts
仍然需要单独完成。
hostnamectl set-hostname new-hostname
该命令是systemd-services
程序包(自Ubuntu 14.04起,还包括timedatectl
和localectl
命令)的一部分。随着Ubuntu迁移到systemd
,这个工具是未来。
第三种解决方法
没有重新启动
在不重新启动的情况下更改ubuntu中的主机名或计算机名称
编辑/etc /hostname并更改为新值,
nano /etc/hostname
编辑/etc /hosts并将旧的127.0.1.1行更改为新的主机名
127.0.0.1 localhost
127.0.1.1 ubuntu.local ubuntu # change to your new hostname/fqdn
注意:我已经在论坛上阅读过它>编辑/etc /hosts并将旧的127.0.1.1行更改为新的主机名(如果你不这样做,你将不能再使用sudo,如果你已经完成了它,按下grub菜单上的ESC,选择恢复,并编辑你的主机文件到正确的设置)
现在重新启动后,您的主机名将成为您选择的新主机名
无需重启
要在不重启的情况下进行更改,可以在编辑/etc /hostname后使用hostname.sh。您必须将您的主机名保留在/etc /hosts(127.0.0.1 newhost oldhost)中,直到执行以下命令:
sudo service hostname start
注意:以上命令使更改生效。保存在此文件(/etc /hostname)中的主机名将在系统重启时保留(并且将使用相同的服务进行设置)。
第四种方法
默认名称是在安装Ubuntu时设置的。您可以轻松将其更改为Desktop&服务器通过编辑主机和主机名文件。以下是如何:
-
按键盘上的
Ctrl
Alt
t
打开终端。打开时,运行以下命令:sudo hostname NEW_NAME_HERE
这将改变主机名直到下一次重新启动。在您当前的终端中,更改不会立即显示。启动一个新终端来查看新的主机名。
-
要永久更改名称,请运行命令以编辑主机文件:
sudo -H gedit /etc/hostname
和sudo -H gedit /etc/hosts
对于没有GUI的Ubuntu服务器,运行sudo vi /etc/hostname
和sudo vi /etc/hosts
并逐一编辑它们。在这两个文件中,将名称更改为所需并保存。
最后,重新启动计算机以应用更改。
第五种方法
这是一个以规定的方式改变主机名的脚本。它确保不仅sudo
而且X11应用程序继续运行,不需要重新启动。
用法:sudo ./change_hostname.sh new-hostname
#!/usr/bin/env bash
NEW_HOSTNAME=$1
echo $NEW_HOSTNAME > /proc/sys/kernel/hostname
sed -i 's/127.0.1.1.*/127.0.1.1\t'"$NEW_HOSTNAME"'/g' /etc/hosts
echo $NEW_HOSTNAME > /etc/hostname
service hostname start
su $SUDO_USER -c "xauth add $(xauth list | sed 's/^.*\//'"$NEW_HOSTNAME"'\//g' | awk 'NR==1 {sub($1,"\"&\""); print}')"
第六种方法
不重新启动:
-
更改
/etc/hostname
中的主机名 -
相应地更新
/etc/hosts
-
sudo sysctl kernel.hostname=mynew.local.host
用hostname -f
检查当前的主机名
第七种方法
要获取当前的主机名:
cat /etc/hostname
这可以在任何文本编辑器中进行更改。您还需要在/etc /hosts中针对127.0.0.1更新localhost以外的条目。
第八种方法
sudo hostname your-new-name
sudo /etc/init.d/networking restart
这应该做我认为的工作
第九种方法
-
用所需的主机名替换
/etc/hostname
的内容(您可以使用sudo nano /etc/hostname
编辑) -
在
/etc/hosts
中,用所需的主机名替换127.0.1.1旁边的条目(您可以使用sudo nano /etc/hosts
编辑) -
执行
sudo service hostname restart; sudo service networking restart
第十种方法
我已阅读答案,但我想可能你正在寻找这个:
编辑/etc/hostname
文件后,只需执行这两个命令即可。
$ sudo service hostname restart
$ exec bash
就这样。不需要重新启动。同时请确保您也更改/etc/hosts
文件中的名称。
参考资料