3

我有一个运行 Ubuntu 16.04.1x64 的 DO droplet,我正在尝试将IPFS作为 systemd 服务运行。我已经按照此处的说明创建了一个用户“connor”并安装了 IPFS 。我将服务作为“ipfs.service”存储在 ~/.config/systemd/user/ipfs.service 中,如下所示:

[Unit]
Description=IPFS Daemon

[Service]
Type=simple
ExecStart=/usr/local/bin/ipfs daemon
ExecStop=/usr/bin/pkill ipfs
Restart=always
User=Connor

[Install]
WantedBy=default.target

奇怪的是,如果我运行systemctl --user start ipfs它启动得很好。但是,运行systemctl --user daemon-reload然后 systemctl --user enable ipfs我得到错误:

执行操作失败:没有这样的文件或目录

但是,如果我运行 systemctl enable /home/connor/.config/systemd/user/ipfs.service -f它运行得很好。我可以重新启动并运行 IPFS 命令就好了。我想以用户身份运行它,也想了解我做错了什么。

4

1 回答 1

1

请检查您是否正在使用connor用户执行命令,您可能会运行whoami以查看用户执行命令。(使用 sudo 运行命令会将用户更改为root

此外,我看到服务文件中的用户是大写的(Connor 而不是 connor),这可能会带来其他问题,并且不需要,因为像Arch Linux wiki 提出的简单配置适用于用户守护进程。

请在下面找到我用于 ipfs 守护程序的配置(没有 User= 和不同的 Restart=,因为 Restart=always 在启动守护程序时会给我带来问题):

[Unit]
Description=IPFS daemon
After=network.target

[Service]
ExecStart=/usr/local/bin/ipfs daemon
Restart=on-failure

[Install]
WantedBy=default.target
于 2017-09-04T10:01:12.747 回答