0

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

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

我知道这个“子进程”存在于我的 python 程序中。并且 bash 脚本停止了 linux 服务,所以停止了 python 程序,所以停止了它自己......所以它永远不会结束。

有什么解决方案可以解决我的问题?

4

2 回答 2

1

我认为有几种方法可以做到这一点 - 其中一种是(也许不是最优雅的?)使用python-crontab让你的 python 调度 bash 脚本的 cron 作业。

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

于 2021-07-08T09:33:34.800 回答
0

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

于 2021-07-08T09:52:00.240 回答