如果Python程序未运行则执行Bash脚本

问题描述 投票:0回答:1

我有一个 bash 脚本,当前检查名为 miner_nbeats.py 的 python 脚本,如果尚未运行则执行它。

这是我的脚本

if /bin/pgrep -f "miner_nbeats.py" >/dev/null; then
    echo "script running"
else
    echo "script not running"
    tmux new-session \; send-keys "source activate python310 && cd /home/putsncalls23/test && python miner_nbeats.py" Enter
fi

然后我有一个 python 脚本,它每 5 分钟执行一次 bash 脚本。然而,问题是,即使程序

miner_nbeats.py
被杀死,系统仍然会检测到正在运行
pgrep -f "miner_nbeats.py"
的进程,并且如果它被杀死,永远不会重新执行
miner_nbeats.py
。 (我猜这是 tmux 命令的结果?)

这附近还有吗?

谢谢

python linux bash pid
1个回答
0
投票

通过自动重启启动 systemd 服务。

最好在 /etc/systemd/system/miner_nbeats.service 中在系统范围内创建它,或者使用

systemd-run
临时启动服务。重要的是设置属性
Restart=always

[Unit]
Description=starts my miner_nbeats
[Service]
ExecStart=/bin/bash -c 'source activate python310 && cd /home/putsncalls23/test && python miner_nbeats.py'
Restart=alway
© www.soinside.com 2019 - 2024. All rights reserved.