systemd 服务不再工作

systemd 服务不再工作

我有一个可执行文件secretserviced,我希望用户能够制作一个用户服务从中。我把这个可执行文件放入/usr/bin并制作一个单元文件 ( secretserviced.service) 如下并将其放在/etc/systemd/user:

[Unit]
Description=Service to keep secrets of applications
Documentation=https://github.com/yousefvand/secret-service

[Install]
WantedBy=default.target

[Service]
Type=simple
RestartSec=30
Restart=always
Environment="MASTERPASSWORD=01234567890123456789012345678912"
WorkingDirectory=/usr/bin/
ExecStart=/usr/bin/secretserviced

然后用户可以通过以下方式启用并启动该服务:systemctl enable --now --user secretserviced.service

这个方法直到几个月前还有效,但现在已经不起作用了。

我的配置有什么问题吗?

聚苯乙烯: 我用Archlinux

答案1

为了得到准确的答案,我们需要以下输出:

systemctl status --user secretserviced.service

但根据所提供的信息,这是我的最佳猜测。


WorkingDirectory=/usr/bin/很奇特。如果您需要指定 a,WorkingDirectory=通常是定义数据结构的根,或者定义程序创建输出文件的位置。 bin 不适用于这两种情况。我怀疑您的应用程序正在尝试写入/usr/bin,但您的用户无权这样做。

在这种情况下,请尝试类似的方法

  • WorkingDirectory=%h让它写入您的主目录或
  • WorkingDirectory=%t让它写入临时运行时目录。
  • WorkingDirectory=%h/path/to/data让它使用特定的数据树。

“我把这个可执行文件放在/usr/bin 中”。

一般来说,只pacman将东西安装到/usr/bin.如果你. 那里的每个文件都应该返回一个包pacman -Qo <filename>。如果您通过手动复制或使用来安装东西make install,通常应该将它们放入/usr/local/bin.这样可以轻松查看哪些文件由您的发行版管理,哪些文件由您管理。您自己安装了一个文件这一事实/usr/bin让我认为安装可能存在一些问题。

检查/usr/bin/secretserviced拼写是否正确并标记为可执行文件。如果它不可执行,您可以使用 来修复它sudo chmod w+x /usr/bin/secretserviced。如果这确实是问题,那么systemd status --user secretserviced将报告exit code 203

相关内容