我有一个Python脚本,该脚本可以在具有不同参数的多个实例中运行,例如:
python3 proc.py -s -v -l proc_one.log
python3 proc.py -c -v -l proc_two.log
我通常在tmux
会话中使用引导脚本在会话中启动这些文件,然后手动检查这些文件,以在它们崩溃时重新启动。
tmux new-session -d -s proct 'cd /opt/proct/ && python3 proc.py -s -v -l proc_one.log; bash'
tmux split-window -t proct 'cd /opt/proct/ && python3 proc.py -c -v -l proc_two.log; bash'
这相当繁琐,应该自动化。最近,我遇到了这个解决方案,它提供了我所需要的那种。一个cronjob每隔几分钟运行一次以下bash脚本:
if [[ ! $(pgrep -f '^python3 proc.py -s -v -l proc_one.log') ]]; then
python3 proc.py -s -v -l proc_one.log
fi
尽管这将使我的脚本保持运行,但也将阻止我在进程中进行表单签入。
我的问题是,如何让脚本检查我的进程是否正在运行,就像上面的进程一样,但是如果它没有运行,请在tmux
会话中启动它。我不介意tmux
针对不同实例进行单独的会话。
提供服务。放
[Unit]
Description=ProcOfMine
After=network-online.target
[Service]
ExecStart=python proc.py --args ok
Restart=always
[Install]
WantedBy=multi-user.target
在
/lib/systemd/system/proc.service
还要实现错误处理,以使脚本不会崩溃。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句