如何将 [Service] 下的 User 传递给 systemd 中的 OnFailure 单元

如何将 [Service] 下的 User 传递给 systemd 中的 OnFailure 单元

我有一个以特定用户(而不是 root)身份运行的 systemd 单元。该单元与 1 个其他 systemd 单元发生 OnFailure。在此 OnFailure 单元中,ExecStart 启动一个发送电子邮件的 shell 脚本。我想将失败的原始系统单元中的用户传递给此 shell 脚本。我怎样才能做到这一点?

答案1

在传递参数时启动单元的常用方法是使用实​​例并启动,unit@parameter然后使用 恢复单元内的该值%I。例如,用于--user测试,文件~/.config/systemd/user/tryfail.service

[Unit]
User=otheruser
[email protected]
[Service]
ExecStart=/bin/bash -c 'sleep 3;exit 7'

~/.config/systemd/user/[email protected]

[Unit]
Description=%I Instance of Fail Service
[Service]
ExecStart=/bin/bash -c 'echo got %i'
StandardOutput=journal

现在命令

systemctl --user daemon-reload
systemctl --user start tryfail
journalctl -f 

应该向您显示正在启动的失败服务otheruser作为信息。显然,User=在使用 进行测试时 会被忽略--user,但这并不重要。

相关内容