我有一个在启动时无限运行的脚本,还有另一个脚本可以安全地关闭它。第二个脚本需要连接到远程数据库。它们分别在同一个服务中声明为和ExecStart
。ExecStop
我需要第二个脚本阻止关机/重启,直到它完成。目前,第一个脚本运行良好,但第二个脚本提前终止。这是我目前所拥有的:
[Unit]
DefaultDependencies=no
Wants=network-online.target
After=network.target network-online.target
Before=reboot.target shutdown.target halt.target
[Service]
Type=oneshot
RemainAfterExit=true
User=test
ExecStart=/usr/bin/python /home/test/test.py
ExecStop=/usr/bin/sh /home/test/test
KillMode=none
[Install]
WantedBy=multi-user.target
我尝试使用以下方法:systemd 等待命令完成后再重启/关闭或终止其他进程但它并没有解决我的问题,而且看起来他的命令运行得相对较快。
答案1
我添加了以下内容并且它起作用了:
TimeoutSec=300min
我的最终配置是:
[Unit]
DefaultDependencies=no
Wants=network-online.target
After=network.target network-online.target
Before=reboot.target shutdown.target halt.target
[Service]
Type=simple
RemainAfterExit=true
User=test
ExecStart=/usr/bin/python /home/test/test.py
ExecStop=/usr/bin/sh /home/test/test
KillMode=none
TimeoutSec=300min
[Install]
WantedBy=multi-user.target
笔记:我故意没有TimeoutSec=infinity