我有一个python程序,它是作为linux服务的instantier。此服务通过在ftp服务器上下载新版本的代码来更新自身,并启动一个bash文件来更新服务。在这个文件中,我有一行代码,在使用新的源代码重新创建当前服务之前销毁它。我使用以下命令运行此bash脚本:
subprocess.call("sudo bash /home/pi/install.sh",shell=True)
我知道这个“子流程”存在于我的python程序中。bash脚本停止linux服务,停止python程序,停止自身。。。所以它永远不会结束。
解决我问题的办法是什么?
2条答案
按热度按时间eit6fx6z1#
我认为有几种方法可以做到这一点——其中之一是(也许不是最优雅的?)让您的python使用python crontab来安排bash脚本的cron作业。
假设现在是13:00,您希望您的作业运行—然后让python脚本将cron作业安排到13:05(只是为了添加一个时间缓冲区)。然后,您可以在bash作业运行后删除cron作业,可以手动删除,也可以在bash脚本中实现(或者让它调用使用pythoncrontab删除它的python脚本,这样做相当容易)
sbtkgmzw2#
不要让脚本停止服务。如果安装了新版本,只需让它使用特定的退出代码退出,然后在python代码中相应地重新启动服务。