如何运行在程序结束python时未退出的bash文件

pprl5pva  于 2021-09-13  发布在  Java
关注(0)|答案(2)|浏览(427)

我有一个python程序,它是作为linux服务的instantier。此服务通过在ftp服务器上下载新版本的代码来更新自身,并启动一个bash文件来更新服务。在这个文件中,我有一行代码,在使用新的源代码重新创建当前服务之前销毁它。我使用以下命令运行此bash脚本:

subprocess.call("sudo bash /home/pi/install.sh",shell=True)

我知道这个“子流程”存在于我的python程序中。bash脚本停止linux服务,停止python程序,停止自身。。。所以它永远不会结束。
解决我问题的办法是什么?

eit6fx6z

eit6fx6z1#

我认为有几种方法可以做到这一点——其中之一是(也许不是最优雅的?)让您的python使用python crontab来安排bash脚本的cron作业。
假设现在是13:00,您希望您的作业运行—然后让python脚本将cron作业安排到13:05(只是为了添加一个时间缓冲区)。然后,您可以在bash作业运行后删除cron作业,可以手动删除,也可以在bash脚本中实现(或者让它调用使用pythoncrontab删除它的python脚本,这样做相当容易)

sbtkgmzw

sbtkgmzw2#

不要让脚本停止服务。如果安装了新版本,只需让它使用特定的退出代码退出,然后在python代码中相应地重新启动服务。

相关问题