如何从可能终止也可能不终止的 systemd 单元文件运行 ExecStartPost 命令

如何从可能终止也可能不终止的 systemd 单元文件运行 ExecStartPost 命令

我正在尝试编写一个 systemd 单元文件。当我启动服务 siad 时,我想启动另一个命令 /usr/sbin/clearshare-scheduler.sh,该命令可能运行几个小时,也可能立即完成。我尝试过使用 ExecStartPost 执行此操作,但如果命令无法在短时间内完成并给出失败消息,systemd 不喜欢它。示例文件是:

[Unit]
Description=Siad
After=syslog.target network.target

[Service]
Type=simple
OOMScoreAdjust=500
PIDFile=/var/run/siad.pid
EnvironmentFile=/etc/sysconfig/siad
Environment="SIA_DATA_DIR=/var/lib/siad-data"
ExecStart=/usr/bin/siad $EXTRA_ARGS
ExecStop=/usr/bin/siac stop
WorkingDirectory=/var/lib/sia/
ExecStartPost=/usr/bin/sh -c 'umask 022; /usr/bin/pgrep siad > /var/run/siad.pid'
ExecStartPost=/usr/sbin/clearshare-scheduler.sh

[Install]
WantedBy=multi-user.target

我尝试使用“&”将其放入后台并使用 nohup 启动它,但它们也不起作用。

答案1

测试添加到TimeoutStartSec=[Service]。它影响所有的启动过程。

https://www.freedesktop.org/software/systemd/man/systemd.service.html#TimeoutStartSec=

答案2

只需添加该命令/usr/sbin/clearshare-scheduler.sh,因为第二个服务需要您的第一个服务。我希望这有帮助!

相关内容