我想更改操作系统主机名,但不想重新启动。
我已经编辑过,/etc/hostname
但是需要重新启动才能实现。如何避免这种情况?
我想更改操作系统主机名,但不想重新启动。
我已经编辑过,/etc/hostname
但是需要重新启动才能实现。如何避免这种情况?
Answers:
这很容易。只需点击Gear图标(位于屏幕右上角),打开“关于此计算机”屏幕(位于Gear图标)并编辑“设备名称”。
或者,在终端中,使用以下命令:
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
这样它现在包含您的新主机名。(这是必需的,否则许多命令将停止运行。)
/etc/hosts
(请参阅其他答案)
hostname
将使新名称立即生效,但除非您也进行更改/etc/hostname
,否则它不是“永久的” /etc/hosts
,因为这些是重启或崩溃后将读取的文件,当然,您可能不会期待提前。
该hostnamectl
命令是Desktop和Server版本上默认安装的一部分。
它结合了通过hostname
命令设置主机名和进行编辑的功能/etc/hostname
。除了设置静态主机名外,它还可以设置“漂亮的”主机名,这在Ubuntu中不使用。不幸的是,编辑/etc/hosts
仍然必须单独进行。
hostnamectl set-hostname new-hostname
该命令是systemd-services
软件包的一部分(从Ubuntu 14.04开始,该软件包还包括timedatectl
和localectl
命令)。随着Ubuntu迁移到systemd
,该工具将成为未来。
hostnamectl
并不存在。猜猜一些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。如果您已经使用过sudo, ,在grub菜单上按ESC,选择恢复,然后将您的主机文件编辑为正确的设置)
现在,重新启动后,您的主机名将成为您选择的新主机名
要在不重新启动的情况下进行更改,只需在编辑/ etc / hostname之后使用hostname.sh即可。您必须将两个主机名都保留在/ etc / hosts(127.0.0.1 newhost oldhost)中,直到执行以下命令:
sudo service hostname start
注意:以上命令使更改生效。保存在此文件中的主机名(/ etc / hostname)将在系统重新引导时保留(并使用相同的服务进行设置)。
sudo: unable to resolve host old-hostname
。对于这一部分,@ jesperado解决方案效果很好。
/etc/hosts
,则在12.04.2 LTS上,许多东西会开始失败,包括w
命令,Apache /sbin/reboot
等。确保更新/etc/hosts
127.0.0.1
为localhost
和127.0.1.1
自定义的主机名。对?然后,在您的答案接近尾声的情况下,对于没有改组的操作,请参考/etc/hosts
和127.0.0.1 newhost oldhost
。那么,有没有需要的127.0.1.1
地址?
sudo nano /etc/hosts
更改才能生效;没有sudo,只是nano /etc/hosts
没有保存更改
默认名称是在安装Ubuntu时设置的。通过编辑主机和主机名文件,您可以轻松地将其更改为“桌面和服务器”中所需的任何内容。以下是方法:
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}')"
su $SUDO_USER -c "xauth add $(xauth list | sed 's/^.*\//'"$NEW_HOSTNAME"'\//g' | awk 'NR==1 {sub($1,"\"&\""); print}')"
做什么的?只是好奇。
xauth list
),并将旧的主机名替换为新的主机名(sed
)。然后awk
将引号括在第一个参数之前,xauth add
因为xauth
的输入和输出格式不对称。
尽管上述方法(hostnamectl
,etc/hostname
等)可用于立即更改主机名,但随着cloud-init的出现-它可以控制主机名的设置-在许多其他事情中。因此,如果安装了cloud-init,它在重启后不会卡住。如果您希望更改在重启后保留下来,则需要编辑cloud-init的配置文件,禁用cloud-init的主机名设置/更新模块:
sudo sed 's/preserve_hostname: false/preserve_hostname: true/' /etc/cloud/cloud.cfg
或完全禁用cloud-init:
sudo touch /etc/cloud/cloud-init.disabled
/etc/cloud/cloud.cfg
。包裹名称是什么?只是cloud-init
吗
要获取当前的主机名:
cat /etc/hostname
可以在任何文本编辑器中更改。您还需要针对/ etc / hosts中的127.0.0.1更新localhost以外的条目。
/etc/hostname
所需的主机名替换的内容(您可以使用编辑sudo nano /etc/hostname
)/etc/hosts
,替换127.0旁边的条目。1 .1使用所需的主机名(您可以使用编辑sudo nano /etc/hosts
)sudo service hostname restart; sudo service networking restart
# if you do nothing you'll end up with: # * /etc/hostname (and 'hostname') managed via: 'preserve_hostame: false' # if you do not change /etc/hostname, it will be updated with the cloud # provided hostname on each boot. If you make a change, then manual # maintenance takes over, and cloud-init will not modify it.
我目前没有Ubuntu 18,因此直到周末我都无法对其进行测试。
原始发布者问题的经典答案是,一旦编辑完/etc/hostname
,您就可以通过运行主机名(1)并以-F
(--file
)选项为根来使其应用而无需重新启动:
sudo hostname -F /etc/hostname
二十多年来,使用和所述程序处理的hostname(5)/etc/hostname
在Debian及其衍生版本中一直是相同的,提供该程序的软件包已被标记为基本和必需,并且IIRC初始化脚本实际上已将相同的东西用于几十年(/etc/init/hostname.conf
仍然包含它),所以我不得不说我真的很困惑,为什么没人会提到这一点:)