繁体   English   中英

如何使用bash脚本重新启动在屏幕内运行的python脚本?

[英]How do I restart a python script running inside of a screen using a bash script?

好的,这是我的情况:

在服务器上,我有一个屏幕会话(它是使用screen -S python-script启动的),其中运行着一个python脚本。

我通过推送到git repo对该项目进行更改。 当我想让更改反映在项目上时,我将ssh进入服务器,使用screen -x python-script然后Ctrl-c发送键盘中断,然后git pull origin master然后是./run_script.py

我想做一些聪明的事情,使我的项目能够更新并重新启动。 另一个小型python服务器将驻留在此远程服务器上,并侦听我的项目的请求,然后该python服务器将使用subprocess来运行bash脚本,该脚本将更新并重新启动我的项目。

我知道这有点令人费解,如果有更好的方法来做我想要的事情,我真的很想提出一些建议。

现在,如果我可以制定一个bash脚本来执行我想要的操作,那么我知道这可以工作(可能..)。

1)使用nohup而不是screen,如果您对输出感兴趣,则将stdout重定向到循环日志。 将PID存储在某处。

2)在您的仓库中设置一个“部署”分支。

3)在服务器上设置一个cronjob ,每隔x分钟拉一次“ deployment”分支。

4) 每当您的“部署”分支上有新的提交时,请使用githook触发启动/停止。 使用存储的pid杀死它。


编辑:

如果您需要通过Ctrl + C杀死,只需发送带有kill的SIGINT ,然后等待 pid消失即可。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM