我想更改操作系统的主机名,但我不想重新启动。
我已经编辑了/etc/hostname文件,但是需要重新启动才能生效。有什么方法可以避免重新启动吗?
我已经编辑了/etc/hostname文件,但是需要重新启动才能生效。有什么方法可以避免重新启动吗?
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
/etc/hosts
文件(请参考其他答案)。 - JB.hostname
会立即生效,但如果您不同时更改 /etc/hostname
和 /etc/hosts
,它并不是“永久”的。因为在重启或崩溃后,系统会读取这些文件,而这当然是您事先可能不会预料到的情况。 - Tim Parenti/etc/hosts
文件中写着 127.0.1.1 localhost
。所以你建议将 localhost
改成什么? - Dims127.0.1.1 localhost localhost.localdomain your-domain.net
- jasperado/etc/postfix/main.cf
文件以及myhostname
和mydestination
变量。 - forsvunnethostnamectl
命令是桌面版和服务器版默认安装的一部分。
它结合了使用hostname
命令设置主机名和编辑/etc/hostname
文件。除了设置静态主机名外,它还可以设置“pretty”主机名,但在Ubuntu中不会使用。不幸的是,编辑/etc/hosts
仍然需要单独完成。
hostnamectl set-hostname new-hostname
systemd-services
包的一部分(从Ubuntu 14.04开始,该包还包括timedatectl
和localectl
命令)。随着Ubuntu迁移到systemd
,这个工具是未来的方向。hostnamectl
命令并不存在。看来某些版本的Ubuntu还没有开始使用systemd。 - Stéphane/etc/hosts
和调用hostnamectl
。我认为可能还需要第三个项目,类似于export HOSTNAME=xxx
。此外,顺序可能很重要。如果顺序错误,我在调用sudo
时会遇到问题。我推断sudo
依赖于/etc/hosts
,所以最好先执行这个操作,如果其他两个操作中的任何一个需要sudo
的话。 - H2ONaClsudo
可以工作,但最好消除“错误”消息,即使它只是一个“警告”,所以我认为必须首先对/etc/hosts
进行编辑。如果我们是交互式的,那么用户可以打开一个新终端,但如果我们在脚本中,我认为最好立即进行第三个更改,因此我建议使用export HOSTNAME=xxx
。 - H2ONaClhostname
命令。 - muruexport HOSTNAME=xxx
。即使你的脚本不需要它,最完整的答案可能需要类似这样的操作才能普遍适用。我不知道是否有更好的方法,所以我就这样做了。 - H2ONaClsudo service avahi-daemon restart
。Raspbian上的默认主机名是raspberrypi.local
,如果你有多个这样的设备,重命名是一个常见的任务。 - Scott Prive在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
sudo service hostname start
sudo: unable to resolve host old-hostname
。对于这个问题,@jesperado的解决方案效果很好。 - Frédéric Grosshans/etc/hosts
,在Ubuntu 12.04.2 LTS中很多东西将无法正常运行,包括w
命令、Apache、/sbin/reboot
等等。请务必更新/etc/hosts
文件。 - Josh127.0.0.1
代表localhost
和127.0.1.1
代表自定义主机名。对吗?然后,在你的回答末尾,对于无需重启的操作,你提到了/etc/hosts
和127.0.0.1 newhost oldhost
。所以,不需要127.0.1.1
地址吗? - Nikos Alexandrissudo nano /etc/hosts
才能使更改生效;如果没有sudo,只有nano /etc/hosts
是无法保存更改的。 - musicman1979尽管上述方法(hostnamectl
、etc/hostname
等)可用于立即更改主机名,在cloud-init出现后,它可以控制主机名的设置以及其他许多事项。因此,如果安装了cloud-init,则在重新启动后主机名将不会保留。如果您希望更改在重新启动后仍然生效,则需要编辑cloud-init配置文件,禁用cloud-init的主机名设置/更新模块:
sudo sed 's/preserve_hostname: false/preserve_hostname: true/' /etc/cloud/cloud.cfg
sudo touch /etc/cloud/cloud-init.disabled
/etc/cloud/cloud.cfg
文件。这个软件包的名称是什么?只是cloud-init
吗? - Ciro Santilli OurBigBook.comsudo cloud-init clean && sudo nano /var/lib/cloud/seed/nocloud*/user-data
(更新 "hostname:")-- 重新启动。 - B. Sheasudo
,而且X11应用程序在无需重新启动的情况下继续正常运行。sudo ./change_hostname.sh 新主机名
#!/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}')"
是用来做什么的?只是好奇。 - Fr0zenFyrxauth list
),并使用新的主机名(sed
)替换旧的主机名。然后,awk
会在 xauth add
的第一个参数周围添加引号,因为 xauth
的输入和输出格式不对称。 - Lucas无需重新启动:
/etc/hostname
中更改主机名/etc/hosts
sudo sysctl kernel.hostname=mynew.local.host
使用hostname -f
检查当前主机名
sudo: unable to resolve host oldname
和sysctl: setting key "kernel.hostname": Read-only file system
的问题。可能是因为在Proxmox中运行的容器(CT)导致的。 - Pablo Bianchicat /etc/hostname
/etc/hostname
文件之后,你可以通过以root身份运行hostname(1)命令,并使用-F
(或--file
)选项来使其立即生效,而无需重启系统。sudo hostname -F /etc/hostname
基于DigitalOcean社区的答案的解决方案。
编辑hosts文件。
$ sudo nano /etc/hosts
用新名称替换oldname。
127.0.0.1 localhost newname
设置新主机名。
$ sudo hostnamectl set-hostname newname