启动hostname.service失败:单位hostname.service已被屏蔽。

9

启动hostname.service失败: 单元hostname.service已被屏蔽。

在更新主机名后发生了这种情况,尝试使用sudo service hostname start。


1
这似乎是关于操作系统支持的问题,而不是编程问题。 - melpomene
我的描述确实不够充分。我有一个Python备份脚本,它寻找主机名以便进行备份,但是在查找时失败了(脚本出错),因此我才提出了这个问题。 - warlockdead
4个回答

22

在运行service hostname restart之前,更新/etc/hostname文件和/etc/hosts文件中的主机名。

在运行systemd的新系统上(例如Ubuntu 16.04),必须使用:sudo hostnamectl set-hostname new-host-name。在此处,用您的主机名替换new-host-name


6

当主机名不匹配时,会导致系统无法查找主机名而出现故障。

确保以下文件顺序正确并反映您的新主机名:

  1. /etc/hostname
  2. /etc/hosts

假设您的旧主机名是:hostname.old,新主机名是hostname.new,则 /etc/hostname文件应如下所示:

hostname.new

并且 /etc/hosts 应该包含以下条目:

...
127.0.0.1    hostname.new
...

1
谢谢Anand,我已经按照你的说明配置好了一切,我的唯一错误是认为有些东西出了问题(需要运行一个Python备份脚本,查找主机名时失败了。) - warlockdead

3

不用担心。当我尝试在以下目录中更改计算机名称(主机名)时,遇到了同样的问题:

  • /etc/hostname
  • /etc/hosts

编辑这两个文件后,运行sudo service hostname restart命令返回相同的错误。

我只是简单地重新启动了计算机,然后就看到计算机名称(主机名)已经成功更改了。只需重新启动您的计算机,一切都会没问题的。


在Ubuntu 18.04上,一个简单的注销和登录功能运行良好。 - hack-tramp

0

最新的Debian Stretch 9.6版本需要您自己更改/etc/hosts并使用hostnamectl。以下是一个一行命令,可以完成所有操作,原始文件以日期追加到结尾进行保存。也许这适用于其他发行版。

sudo -- bash -c 'echo "Please enter new Hostname"; old=$(hostname);read host; \
sed -i.$(date "+%H%M%S%d%m%y") -e "s:$old:$host:g" /etc/hostname;  \
sed -i.$(date "+%H%M%S%d%m%y") -e "s:$old:$host:g" /etc/hosts; \
hostnamectl set-hostname $host; echo "Old Name:$old and New Name is:$host"'

完成后应重新启动以反映所有更改。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接