【发布时间】:2011-02-12 10:57:00
【问题描述】:
这篇文章描述了如何在 BASH 脚本中保持子进程处于活动状态:
How do I write a bash script to restart a process if it dies?
这非常适合调用另一个 BASH 脚本。
但是,我尝试在子进程是 Python 脚本的情况下执行类似的操作,daemon.py 会创建一个在后台运行的分叉子进程:
#!/bin/bash
PYTHON=/usr/bin/python2.6
function myprocess {
$PYTHON daemon.py start
}
NOW=$(date +"%b-%d-%y")
until myprocess; do
echo "$NOW Prog crashed. Restarting..." >> error.txt
sleep 1
done
现在行为完全不同了。似乎 python 脚本不再是 bash 脚本的子脚本,但似乎已经“接管”了 BASH 脚本 PID - 所以被调用的脚本周围不再有 BASH 包装器......为什么?
【问题讨论】:
-
了解 daemon.py 中的内容会有所帮助,但从名称上我猜它会执行“exec”或任何与 python 等价的东西将自己置于后台。
-
真的应该把标题从“Python”改成“daemonized”。
标签: python bash process daemon pid