我有一个运行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/