我有一个运行Ubuntu 16.04.1x64的DO Drop,我试图将IPFS作为systemd服务运行。我已经按照here的指示创建了一个用户“connor”并安装了IPFS。我将服务存储为〜/ .config / systemd / user / ipfs.service中的“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启用 /home/connor/.config/systemd/user/ipfs.service -f ,则可以正常运行。我可以重新启动并运行IPFS命令。我想以用户身份运行它,也想了解我做错了什么。

最佳答案

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

另外,我看到服务文件中的用户是大写的(用Connor代替connor),这可能会带来其他问题,并且不需要,因为像one proposed by Arch Linux wiki这样的简单配置适用于用户守护程序。

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

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

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

[Install]
WantedBy=default.target

关于service - systemctl enable有效,但systemctl --user enable不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41310062/

10-08 21:10