如何 运行 一个 bash 文件在我的程序结束时不退出 python

How to run a bash file that does not exited when my program ends python

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

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

我知道这个“子进程”存在于我的 python 程序中。 bash 脚本会停止 linux 服务,因此会停止 python 程序,因此会自行停止……因此它永远不会结束。

解决我的问题的方法是什么?

我认为有几种方法可以做到这一点 - 其中之一(也许不是最优雅的?)让你的 python 安排 bash-脚本的 cron-job 使用 python-crontab.

假设它是 13:00 并且您希望您的工作 运行 - 然后让 python 脚本将 cron-job 安排到 13:05 (只是为了添加一个时间缓冲)。 然后,您可以在 bash-job 已经 运行 之后删除您的 cron-job,手动或在您的 bash-脚本中实现它(或让它调用 python使用 python-crontab 删除它的脚本,这样做相当容易)

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