systemctl enable命令有效,但systemctl --user enable命令无效。

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-reloadsystemctl --user enable ipfs后,我会收到以下错误信息:

无法执行操作:没有这个文件或目录

但是,如果我运行systemctl enable /home/connor/.config/systemd/user/ipfs.service -f,它就可以正常运行。我可以重新启动并正常运行IPFS命令。虽然如此,我仍想以用户身份运行它,并希望了解我做错了什么。


你是以“connor”用户执行命令吗?请注意,使用sudo执行命令可能会将用户更改为“root”。 - atfornes
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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接