我正在尝试编写一个 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
,因为第二个服务需要您的第一个服务。我希望这有帮助!