systemctl enable netctl.service 有什么作用

Azr*_*000 11 systemd netctl

我有一个运行 Arch 的小型手臂服务器。我想只使用dhcpcd,所以我禁止我的以太网连接netctl.servicenetctl-ifplugd.service。事实证明这不起作用,我再也无法连接到机器了。服务器在一个 USB 密钥上有它的根,我可以安装在我的桌面上,所以问题是:

如何systemctl enable netctl.service通过操作该 USB 上的文件和/或符号链接文件?

等效的替代问题是,做systemctl enable netctl.service什么?

rem*_*mmy 14

我有一个运行 Arch 的小型手臂服务器。我只想将 dhcpcd 用于我的以太网连接,所以我禁用了 netctl.service 和 netctl-ifplugd.service。事实证明这不起作用,我再也无法连接到机器了。

禁用netctl后是否确保启用dhcpcd?

如何通过操作该 USB 上的文件和/或符号链接文件来“systemctl 启用 netctl.service”?

等效的替代问题是,“systemctl enable netctl.service”有什么作用?

所有systemctl enable做的是从创建符号链接/usr/lib/systemd/system//etc/systemd/system/在适当的目标目录/etc/systemd/system/,并在后者的目录覆盖前的人服务。

systemctl(1)联机帮助页:

enable NAME...
    Enable one or more unit files or unit file instances, as
    specified on the command line. This will create a number 
    of symlinks as encoded in the "[Install]" sections of the
    unit files.
Run Code Online (Sandbox Code Playgroud)

systemctl enable您可以使用以下命令手动启用 netctl 服务,而不是使用:

ln -s /usr/lib/systemd/system/netctl.service \
      /etc/systemd/system/multi-user.target.wants/netctl.service
Run Code Online (Sandbox Code Playgroud)

要手动禁用它,您可以使用以下命令删除使用上一个ln命令创建的符号链接:

rm /etc/systemd/system/multi-user.target.wants/netctl.service
Run Code Online (Sandbox Code Playgroud)

相应的目标目录可以通过查找发现WantedBy在设置[Install]有问题的服务文件的部分,虽然旧的服务文件有时也有Alias代替的WantedBy,你可能要切换到使用WantedBy替代,但无论是将工作一样好。

您可以先检查 dhcpcd 服务是否已正确启用,而不是恢复使用 netctl,如果是,您可以在另一台机器上安装文件系统后使用journalctl's--directory--root标志检查 dhcpcd 服务的日志,看看是否可以提供有关它无法正常工作的原因的任何线索。