如何让systemd服务开机启动

Suz*_*Soy 8 systemd reboot nix

我在 XUbuntu 20.04 上安装了 Nix 包管理器。它添加了一项nix-daemon服务。我想nix-daemon在启动时启动该服务。如果我键入以下命令,该服务将运行并正常工作,直到我停止机器,但重新启动后该服务不会运行,我需要再次运行这些命令。

\n

systemd 似乎禁用了该服务或忘记了它已启用。我如何告诉 systemd 启用该服务并使其保持启用状态?

\n
$ sudo systemctl status nix-daemon\nUnit nix-daemon.service could not be found.\n
Run Code Online (Sandbox Code Playgroud)\n
$ sudo systemctl enable nix-daemon\n
Run Code Online (Sandbox Code Playgroud)\n
$ sudo systemctl status nix-daemon\n\xe2\x97\x8f nix-daemon.service - Nix Daemon\n     Loaded: loaded (/nix/store/4vz8sh9ngx34ivi0bw5hlycxdhvy5hvz-nix-2.3.7/lib/systemd/system/nix-daemon.service; enabled; vendor preset: enabled)\n    Drop-In: /etc/systemd/system/nix-daemon.service.d\n             \xe2\x94\x94\xe2\x94\x80override.conf\n     Active: inactive (dead)\nTriggeredBy: \xe2\x97\x8f nix-daemon.socket\n
Run Code Online (Sandbox Code Playgroud)\n
$ sudo service nix-daemon start\n\xe2\x97\x8f nix-daemon.service - Nix Daemon\n     Loaded: loaded (/nix/store/4vz8sh9ngx34ivi0bw5hlycxdhvy5hvz-nix-2.3.7/lib/systemd/system/nix-daemon.service; enabled; vendor preset: enabled)\n    Drop-In: /etc/systemd/system/nix-daemon.service.d\n             \xe2\x94\x94\xe2\x94\x80override.conf\n     Active: active (running) since Fri 2021-04-16 04:35:15 BST; 2s ago\nTriggeredBy: \xe2\x97\x8f nix-daemon.socket\n   Main PID: 55329 (nix-daemon)\n      Tasks: 5 (limit: 9091)\n     Memory: 13.8M\n     CGroup: /system.slice/nix-daemon.service\n             \xe2\x94\x94\xe2\x94\x8055329 nix-daemon --daemon\n\nApr 16 04:35:15 wayfire systemd[1]: Started Nix Daemon.\nApr 16 04:35:15 wayfire nix-daemon[55329]: warning: unknown setting \'experimental-features\'\nApr 16 04:35:15 wayfire nix-daemon[55329]: warning: unknown setting \'keep-derivarions\'\n
Run Code Online (Sandbox Code Playgroud)\n

编辑:

\n

安装程序创建的内容/etc/systemd/system/nix-daemon.service(我没有修改它):

\n
[Unit]\nDescription=Nix Daemon\nRequiresMountsFor=/nix/store\nRequiresMountsFor=/nix/var\nConditionPathIsReadWrite=/nix/var/nix/daemon-socket\n\n[Service]\nExecStart=@/nix/store/4vz8sh9ngx34ivi0bw5hlycxdhvy5hvz-nix-2.3.7/bin/nix-daemon nix-daemon --daemon\nKillMode=process\n\n[Install]\nWantedBy=multi-user.target\n
Run Code Online (Sandbox Code Playgroud)\n

没有 /etc/default/nix 文件。

\n
$ systemctl get-default\ngraphical.target\n
Run Code Online (Sandbox Code Playgroud)\n

Suz*_*Soy 3

尽管运行,但服务在启动时无法加载的原因有很多systemctl enable thename.service。就我而言,/etc/systemd/system/nix-daemon.service它是由安装程序创建的(我猜?),并且是/nix/var/nix/profiles/default/lib/systemd/system/nix-daemon.service. 我的/nix分区是一个单独的分区,systemd 尝试.service在挂载该分区之前读取该文件(因此无法识别该服务)。journalctl | grep nix-daemon让我能够解决问题。