我有一个以特定用户(而不是 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
,但这并不重要。