簡體   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