我有一个可执行文件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
。