我已经编辑了
/etc/hostname
,但是需要重新启动才能实现。如何避免这种情况?#1 楼
这很容易。只需单击Gear图标(位于屏幕右上角),打开“关于此计算机”屏幕(位于Gear图标),然后编辑“设备名称”。或者在终端中,使用以下命令:
sudo hostname 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
包含您的新主机名。 (这是必需的,否则许多命令将停止运行。)
评论
我不想重启
– Deepak Rajput
2011年12月15日,下午3:12
我知道。这就是为什么您应该使用“主机名”命令。我只是想澄清一下,“主机名”命令仅会更改主机名,直到您重新启动/崩溃/等为止。之后,它将再次从文件中读取名称。
–贾斯珀拉多
2011-12-16在0:31
依靠。如果输入命令,则无需重新启动。主机名已更改。但是只有在您下次重启时才进行。
–贾斯珀拉多
2011-12-16 14:32
请注意,您还必须更改/ etc / hosts(请参阅其他答案)
– JB。和莫妮卡
13年2月25日在15:50
简而言之,尽管主机名将使新名称立即生效,但它不是“永久的”,除非您还更改了/ etc / hostname和/ etc / hosts,因为这些是在重启或崩溃后将被读取的文件。 ,当然,您可能没想到会提前。
–蒂姆·帕特里(Tim Parenti)
13年7月25日在15:05
#2 楼
Ubuntu 13.04及更高版本hostnamectl
命令是台式机和服务器版默认安装的一部分。它结合了通过
hostname
命令设置主机名和编辑/etc/hostname
的功能。除了设置静态主机名外,它还可以设置“漂亮的”主机名,这在Ubuntu中不使用。不幸的是,仍然必须单独编辑/etc/hosts
。hostnamectl set-hostname new-hostname
此命令是
systemd-services
软件包的一部分(从Ubuntu 14.04开始,该软件包还包括timedatectl
和localectl
命令)。随着Ubuntu迁移到systemd
,该工具将成为未来。评论
请注意,这并非在所有地方都可用。只是查看了我的Ubuntu 14.04 LTS ARM-7安装,并且hostnamectl不存在。猜猜一些Ubuntu版本还没有使用systemd。
–Stéphane
2015年7月6日在2:52
@Stéphane命令是systemd套件的一部分,但它们可独立使用。在这种情况下,13.04-14.10请勿将systemd用作init,因为该命令可用。
–muru
15年7月6日在5:05
@ H2ONaCl在启动时设置了shell变量,只需打开另一个shell,主机名变量就可以了。至于sudo,关于主机名解析的错误实际上并没有阻止我执行任何操作。
–muru
17年1月31日在13:57
@ H2ONaCl啊,但是HOSTNAME变量不是标准的-IIRC破折号和ksh没有它,zsh使用HOST,因此就shell变量而言,它是堆的底部。
–muru
17年1月31日在14:14
仍可在Ubuntu 18.04 LTS中使用。
– LucaM
18年6月15日在15:30
#3 楼
不重新启动不重新启动就在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 12.10上,最后一部分不适用于以下错误消息sudo:无法解析主机old-hostname。对于这一部分,@ jesperado解决方案效果很好。
–FrédéricGrosshans
2012年11月23日10:54
如果不更新/ etc / hosts,则在12.04.2 LTS上,许多东西会开始失败,包括w命令,Apache,/ sbin / reboot等。确保更新/ etc / hosts
–乔什
13年8月13日在20:10
对于本地主机,请参阅127.0.0.1,对于自定义主机名,请参阅127.0.1.1。对?然后,在答案结尾处,对于没有rebot的操作,请引用/ etc / hosts和127.0.0.1 newhost oldhost。因此,是否不需要127.0.1.1地址?
– Nikos Alexandris
15年12月19日在11:22
没有为我工作。我必须使用sudo nano / etc / hosts才能使更改生效;没有sudo,只有nano / etc / hosts没有保存更改
– conman253
18年1月30日在23:30
重新启动和重新启动之间有什么区别?
–风暴
18年4月18日在11:45
#4 楼
默认名称是在安装Ubuntu时设置的。通过编辑主机和主机名文件,您可以轻松地将其更改为“桌面和服务器”中所需的任何内容。操作方法如下:按键盘上的CtrlAltt打开终端。当它打开时,运行以下命令:
sudo hostname NEW_NAME_HERE
这将更改主机名,直到下次重新启动。更改不会立即显示在您当前的终端中。启动新终端以查看新的主机名。
要永久更改名称,请运行命令以编辑主机文件:
sudo -H gedit /etc/hostname
和对于没有GUI的Ubuntu服务器,请运行sudo -H gedit /etc/hosts
和sudo vi /etc/hostname
并逐一编辑它们。在两个文件中,将名称更改为所需名称并保存。
最后,重新启动计算机以应用更改。
#5 楼
Cloud-init(Ubuntu 18+)主机名的持久性上述方法(
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
评论
请赞成这个答案。这对我来说很棒。其他答案不适用于cloud-init。
–空
'18 Sep 1'在7:08
@nslntmnx是否默认将其安装在18.04台式机上,仅安装在服务器上?桌面没有/etc/cloud/cloud.cfg。包裹名称是什么?只是云初始化?
– Ciro Santilli郝海东冠状病六四事件法轮功
18-10-30在9:27
此外,有什么方法可以使用cloud-init更改主机名,而不是仅禁用其覆盖?
– Ciro Santilli郝海东冠状病六四事件法轮功
18-10-30在9:33
是的,您可以使用cloud-init更改许多设置-请参阅答案中的docs链接-这是设置主机名的链接:cloudinit.readthedocs.io/en/latest/topics / ...
–皮尔兹
18-10-30在10:32
如果您不想禁用它,但是想要更改主机名:sudo cloud-init clean && sudo nano / var / lib / cloud / seed / nocloud * / user-data(更新“主机名:”)-重新启动。
– bshea
4月5日18:11
#6 楼
这是一个以指定方式更改主机名的脚本。它确保不仅sudo
还能X11应用程序继续运行而无需重新启动。 用法:
sudo ./change_hostname.sh new-hostname
#!/usr/bin/env bash
NEW_HOSTNAME=
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(,"\"&\""); print}')"
评论
脚本su $ SUDO_USER -c“ xauth add $(xauth list | sed's /^.*\//'"$ NEW_HOSTNAME”'\ // g'| awk'NR == 1 {sub ($ 1,“ \”&\“”);打印}')“吗?只是好奇。
–Fr0zenFyr
2014年10月10日在12:22
@ Fr0zenFyr:它使用有效的X11身份验证令牌(xauth列表),并将旧的主机名替换为新的主机名(sed)。然后,由于xauth的输入和输出格式不对称,因此awk将引号放在xauth add的第一个参数周围。
–卢卡斯
2014年11月11日21:36
感谢您的解释。我总是重新启动以使更改生效。 +1
–Fr0zenFyr
2014年3月12日下午4:02
@trakz:实际上,无论数字是127.a.b.c,根据IETF RFC都是本地主机。 (大多数人只是不知道这一点,但大多数人不知道,编辑已批准)
–法比
2015年1月7日在21:25
#7 楼
不重新启动:更改
/etc/hostname
中的主机名相应更新
/etc/hosts
sudo sysctl kernel.hostname=mynew.local.host
用
hostname -f
检查当前主机名评论
对于16.04,sysctl sudo:无法解析主机旧名称,sysctl:设置键“ kernel.hostname”:只读文件系统。可能是因为Proxmox内有CT。
–巴勃罗·比安奇(Pablo Bianchi)
18年5月22日在22:44
#8 楼
获取当前主机名:cat /etc/hostname
可以在任何文本编辑器中更改此名称。您还需要针对/ etc / hosts中的127.0.0.1更新localhost以外的条目。
评论
或者只是从命令行运行命令“主机名”。
– elomage
2015年10月1日13:28
#9 楼
用所需的主机名替换
/etc/hostname
的内容(可以使用sudo nano /etc/hostname
进行编辑)在
/etc/hosts
中,将127.0.1.1旁边的条目替换为所需的主机名(可以使用sudo nano /etc/hosts
进行编辑)执行
sudo service hostname restart; sudo service networking restart
评论
警告:在默认情况下运行cloud-init(在启动时控制主机名)的Ubuntu 18+上无法使用。
–空
'18 Sep 1'在7:04
@nslntmnx您确定吗?我在cloud-config.txt中看到#如果不执行任何操作,最终将得到:#* / etc / hostname(和'hostname')通过以下方式管理:'preserve_hostame:false'#如果您不更改/ etc /主机名,它将在每次引导时使用提供的云#主机名进行更新。如果您进行更改,则手动维护将接管工作,cloud-init不会对其进行修改。我目前没有Ubuntu 18,所以直到周末我才能对其进行测试。
–乔治
18/09/5在20:27
#10 楼
Ubuntu 16.04这没有重启,也没有任何终端使用。
转到系统设置->详细信息。
有。在设备名称旁边,有一个文本框。
编辑文本框并关闭窗口。
打开终端。请自行查看。
(对于旧版本,该文本框不可编辑。)
#11 楼
原始海报问题的经典答案是,一旦编辑了/etc/hostname
,您就可以通过以root身份使用-F
(--file
)选项运行hostname(1)来使其应用而无需重新启动: br /> 使用
/etc/hostname
和上述程序处理的hostname(5)在Debian及其衍生版本中已经使用了二十多年,并且提供该软件包的标签已被标记为必不可少和必需,并且IIRC初始化脚本几十年来一直在使用相同的东西(/etc/init/hostname.conf
仍然包含它),所以我不得不说,我真的很困惑,为什么没人会提到这一点:) 评论
警告:在默认情况下运行cloud-init(在启动时控制主机名)的Ubuntu 18+上无法使用。
–空
'18 Sep 1'在7:04
@nslntmnx erm,什么? Ubuntu 18引入了什么新的依赖项来默认引入cloud-init?您可能会想到一些针对云量身定制的映像,在这种情况下,它们运行自定义的云资源调配工具就不足为奇了。
–乔斯普·罗丹(Josip Rodin)
'18 Sep 1'在11:02
#12 楼
Ubuntu 16.04基于DigitalOcean社区答案的解决方案。
编辑主机文件。
$ sudo nano /etc/hosts
替换旧名称新的主机名。
127.0.0.1 localhost newname
设置新的主机名。
$ sudo hostnamectl set-hostname newname
评论
警告:在默认情况下运行cloud-init(在启动时控制主机名)的Ubuntu 18+上无法使用。
–空
'18 Sep 1'在7:08
#13 楼
sudo hostname your-new-name
sudo /etc/init.d/networking restart
那应该做我认为的工作
评论
我认为这不会在重启后继续存在
–科林·安德森(Collin Anderson)
2014-09-15 15:54
警告:在默认情况下运行cloud-init(在启动时控制主机名)的Ubuntu 18+上无法使用。
–空
'18 Sep 1'在7:04
#14 楼
我已经阅读了答案,但是我想您可能正在寻找它:编辑
/etc/hostname
文件后只需执行以下两个命令即可。$ sudo service hostname restart
$ exec bash
就这样。无需重新启动。还要确保您还更改了
/etc/hosts
文件中的名称。评论
与许多其他答案不同,它不会更新/ etc / hosts(我在14.04上确认)。
–IsaacS
18年5月22日在0:19
警告:在默认情况下运行cloud-init(在启动时控制主机名)的Ubuntu 18+上无法使用。
–空
'18 Sep 1'在7:04
评论
警告:默认情况下将无法在运行cloud-init的Ubuntu 18+上运行,Ubuntu在启动时控制主机名。@nslntmnx,谢谢!