Systemctl - 在分组生成步骤中失败

10

我有一个自动运行服务的问题。我想在用户登录后运行一个脚本。一旦我成功了,但是当我尝试自动化它时,我遇到了一个错误,而且我找不到错误。

服务:

Description=Service desc

[Service]
Type=oneshot
Environment=DISPLAY=:0.0
Environment=XAUTHORITY=/home/albert/.Xauthority
Environment=HOME=/home/albert/
User=albert
Group=albert
RemainAfterExit=true
StandardOutput=journal

ExecStart=/home/albert/.startup-script.sh

[Install]
WantedBy=default.target

位置: /home/albert/.config/systemd/user/startup-service.service

权限: -rw-r--r-- 1 albert albert 306 Jan 2 14:49 startup-service.service

脚本

权限: -rwxr-x-r-x 1 albert albert 86 Jan 2 13:30 /home/albert/.startup-script.sh

日志

Jan 02 17:03:27 irpi-epsilon systemd[734]: Service desc
-- Subject: Unit UNIT has begun start-up
-- Defined-By: systemd
-- Support: https://www.debian.org/support
-- 
-- Unit UNIT has begun starting up.
Jan 02 17:03:27 irpi-epsilon systemd[1025]: startup-script.service: Failed at step GROUP spawning /home/albert/.startup-script.sh: Operation not permitted
-- Subject: Process /home/albert/.startup-script.sh could not be executed
-- Defined-By: systemd
-- Support: https://www.debian.org/support
-- 
-- The process /home/albert/.startup-script.sh could not be executed and failed.
-- 
-- The error number returned by this process is 1.
Jan 02 17:03:27 irpi-epsilon systemd[734]: startup-script.service: Main process exited, code=exited, status=216/GROUP
Jan 02 17:03:27 irpi-epsilon systemd[734]: Service desc
-- Subject: Unit UNIT has failed
-- Defined-By: systemd
-- Support: https://www.debian.org/support
-- 
-- Unit UNIT has failed.
-- 
-- The result is failed.
Jan 02 17:03:27 irpi-epsilon systemd[734]: startup-script.service: Unit entered failed state.
Jan 02 17:03:27 irpi-epsilon systemd[734]: startup-script.service: Failed with result 'exit-code'.

我已经打电话了:

systemctl --user daemon-reload
systemctl --user enable startup-script.service
systemctl --user start startup-script

我正在尝试在树莓派3上进行此操作。非常感谢您指引我方向。

1个回答

32
如果有人遇到类似的问题,那么只需从服务文件中删除“User”和“Group”。我不知道为什么,但是没有它们的话,它能够很好地工作。因此,最终可行的服务描述是:

如果有人遇到类似的问题,那么只需从服务文件中删除“User”和“Group”。我不知道为什么,但是没有它们的话,它能够很好地工作。因此,最终可行的服务描述是:

Description=Service desc

[Service]
Type=oneshot
Environment=DISPLAY=:0.0
Environment=XAUTHORITY=/home/albert/.Xauthority
Environment=HOME=/home/albert/
RemainAfterExit=true
StandardOutput=journal

ExecStart=/home/albert/.startup-script.sh

[Install]
WantedBy=default.target

2
我不能这样做。我需要以用户身份运行我的服务。 - Folaht
通过 '.startup-script.sh' 我正在运行 Chrome 浏览器,并在当前登录的用户下运行。因此,使用上面设置中的用户 'albert'。 - JiangHongTiao
请忽略我的评论。尽管没有明确说明,但我也能够以用户身份运行它,尽管我不知道我是如何做到的。 - Folaht
1
可能把它放在用户目录里就足够了。这只是我的假设,我没有详细研究过。不过它能满足我的需求,所以已经足够了 :) 谢谢您的关心! - JiangHongTiao
3
我可以确认,当使用“--user”服务时,它会将进程绑定到拥有该服务的用户。 - chikamichi
显示剩余2条评论

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