我有Python腳本bgservice.py
,我希望它一直運行,因爲它是我構建的Web服務的一部分。即使在註銷SSH之後,我如何才能使其繼續運行?如何在註銷SSH後在後臺運行Python腳本?
回答
運行nohup python bgservice.py &
讓腳本忽略掛斷信號並繼續運行。輸出將被放入nohup.out
。
理想情況下,您可以運行類似supervise
的腳本,以便在它死亡時重新啓動它。
你可以禁不住,但我更喜歡screen。
你也可以使用幾乎每個Linux/Unix系統都應該有的GNU screen。
如果您在Ubuntu/Debian上,其增強版本byobu也不錯。
謝謝,你做了我的一天:顯然是自從切片面包改良後的最好的事情。 – 2010-06-04 15:45:26
這也是我使用的完全相同的定義:)那麼,我們稱之爲什麼?切片_和烤麪包? ;-) – 2010-06-04 16:18:58
切片,烤,然後在啤酒面糊深炸。 – DataMania 2017-08-17 05:52:08
zsh shell有一個選項可以使所有後臺進程都以nohup運行。
在~/.zshrc
添加行:
setopt nocheckjobs #don't warn about bg processes on exit
setopt nohup #don't kill bg processes on exit
然後你只需要運行一個過程,像這樣:python bgservice.py &
,您不再需要使用nohup命令。
我知道沒有多少人使用zsh,但它是一個非常酷的shell,我會推薦。
如果您已經啓動了該進程,並且不想在nohup下重新啓動並重新啓動,則可以將其發送到後臺,然後拒絕它。
Ctrl+Z
(暫停過程)
bg
(重新啓動在後臺
disown %1
過程中(假設這是工作#1,使用jobs
確定)
你可能會考慮把您的蟒蛇腳本合成一個合適的python守護進程,如here所示。
python-daemon是一個很好的工具,可以是你的sed運行python腳本作爲後臺守護進程而不是永遠運行的腳本。您需要稍微修改現有的代碼,但它很簡單。
如果您在使用python-daemon時遇到問題,還有另一個實用程序supervisor也會爲您執行相同的操作,但在這種情況下,您不必編寫任何代碼(或修改現有代碼),因爲這是超出用於守護程序。
給出一個關於如何解決問題的簡要說明通常是一個好主意。 – 2016-10-08 12:25:01
如果您需要的是無論您是否登錄,進程都應該永遠運行,請考慮將該進程作爲守護進程運行。
supervisord是一個很好的開箱即用的解決方案,可用於守護任何進程。它有另一個控制實用程序supervisorctl
,可用於監視由主管運行的進程。
您不必編寫任何額外的代碼或修改現有的腳本來完成此工作。而且,詳細的文檔使得這個過程更加簡單。
在python-daemon周圍困擾着我的頭幾個小時後,主管是在幾分鐘內爲我工作的解決方案。
希望這有助於有人試圖讓蟒蛇守護工作
下面是一個使用裝飾內部蟒蛇一個簡單的解決方案:
import os, time
def daemon(func):
def wrapper(*args, **kwargs):
if os.fork(): return
func(*args, **kwargs)
os._exit(os.EX_OK)
return wrapper
@daemon
def my_func(count=10):
for i in range(0,count):
print('parent pid: %d' % os.getppid())
time.sleep(1)
my_func(count=10)
#still in parent thread
time.sleep(2)
#after 2 seconds the function my_func lives on is own
當然你也可以更換您的bgservice.py
文件到位的內容my_func
。
- 1. 如何在運行後在後臺啓動python腳本?
- 2. 如何在註銷後讓Perl腳本在Unix上運行?
- 3. 在後臺運行Python腳本
- 4. 在後臺運行python腳本
- 5. Python腳本一直在後臺運行
- 6. 在後臺運行腳本?
- 7. 在後臺運行腳本
- 8. 如何在後臺運行php腳本?
- 9. 如何讓腳本在後臺運行
- 10. 如何強制在Linux上在後臺運行Python腳本
- 11. 在SSH之後運行腳本命令
- 12. 通過SSH運行後臺服務的Python腳本
- 13. 在後臺運行前臺ksh腳本
- 14. 如何在ubuntu後臺運行python腳本?
- 15. 如何在計劃的後臺運行我的python腳本?
- 16. 如何在Windows後臺運行python腳本?
- 17. ssh在後臺運行腳本並獲得其pid
- 18. 超級腳本在後臺運行ssh命令
- 19. 通過SSH在後臺執行遠程python腳本
- 20. 如何在終止ssh後繼續在Raspberry Pi的後臺運行Python程序
- 21. 如何讓Python腳本在執行後運行powershell腳本
- 22. 在後臺運行PHP腳本
- 23. Java:在後臺運行shell腳本
- 24. 在後臺運行Ruby腳本
- 25. 在後臺自動運行bash腳本
- 26. 在後臺運行一個php腳本
- 27. 在後臺運行php腳本centos server
- 28. PHP - 在後臺運行腳本
- 29. 在nginx的後臺運行php腳本
- 30. PHP在後臺運行腳本
當我用nohup和&運行命令時,我得到消息'nohup:忽略 把輸出附加到'nohup.out'' ,當我按下輸入進程時退出狀態爲1.發生了什麼事? – 2013-12-07 15:03:33
讀取nohup.out中的輸出。在我的情況下,這是一個權限問題,我需要使用sudo – mxns 2014-05-06 05:46:00
以及如何在此方法中運行後停止bgservice? – Shaegorath 2018-02-08 10:16:59