【发布时间】:2016-03-06 19:13:56
【问题描述】:
我想在一小时内达到指定时间时启动我的 python 脚本的新实例并终止当前实例。 python 脚本使用 crontab 自动启动。无限循环读取数据。如果在 59 秒 30 和 59 秒 59 之间有数据传入,则文件将关闭,我希望脚本使用新进程 ID 启动自身的新实例并终止旧进程。目前我正在使用
subprocess.call(['python', '/home/pi/script.py'])
sys.exit(1)
这会启动一个新的 python 脚本实例,但当我使用 top 检查进程时,旧的仍然可见并且(似乎)处于活动状态。
有没有更好的方法让程序在 python 脚本中启动并杀死自己?
另一种方法使用由 python 脚本调用的 bash 脚本:
#!/bin/sh
PID=`ps -eaf | grep python | grep -v grep | awk '{print $2}'`
if [[ "" != "$PID" ]]; then
echo "killing $PID"
kill -9 $PID
sleep 1
sudo python /home/pi/readserial_V4_RP.py &
exit 1
fi
但这行不通,因为 python 脚本在 bash 脚本杀死它之前就结束了。我可以在不杀死 python 的情况下启动 python 脚本
进程,但是在启动 python 脚本的新实例之前,如何确定没有 python 脚本正在运行。
因为我有一种感觉,当我运行多个相同的 python 脚本时,第一个启动的脚本正在做所有的“工作”,而其他的只是处于空闲状态......
【问题讨论】:
标签: python subprocess kill restart