寫守護我有一個由跑了.py文件:蟒蛇:如何在Linux的
蟒蛇a.py &
我使用的是ssh來運行命令,之後我有註銷。過了一段時間後,我發現退出了這個過程。我懷疑這是Linux向它發送一些信號?我想如果我可以製作守護進程,那麼我可以避免這種情況?
寫守護我有一個由跑了.py文件:蟒蛇:如何在Linux的
蟒蛇a.py &
我使用的是ssh來運行命令,之後我有註銷。過了一段時間後,我發現退出了這個過程。我懷疑這是Linux向它發送一些信號?我想如果我可以製作守護進程,那麼我可以避免這種情況?
雖然nohup的將工作,這是一個快速和骯髒的解決方案。要創建一個適當的守護進程,你需要使用SysV init或者(如果你運行的是Ubuntu 6.10+或者Fedora 9+)暴發戶。
這裏有一個簡單的腳本開始a.py並重新啓動它時,它就會被殺死(5次5分鐘內跨度):
respawn
respawn limit 5 300
exec python /path/to/a.py
然後,只需把該腳本/etc/init/
。
Upstart還有很多選擇。檢查Quick Start教程。
與「nohup的」運行它忽略的信號時,你的shell退出:
nohup python a.py &
我從布萊恩梆子非常滿意daemonize.py
,基於FreeBSD的daemon(1)
:
http://software.clapper.org/daemonize/
http://github.com/bmc/daemonize
自2009年1月有PEP 3143其中包含指向參考實現,設計目標,引用的鏈接ns(史蒂文斯)等來源。
您也可以使用屏幕實用程序,允許您在單個終端窗口或遠程終端會話內訪問多個單獨的終端會話。
這意味着您可以設置一個屏幕會話(使用您選擇的名稱),在其中啓動一個程序(例如使用&),從會話中分離並稍後重新連接。
啓動未命名的屏幕。
$ screen
要具有特定名稱使用創建一個新的會話:
$ screen -S backup
- 這些都命令創建一個新的持久的會話,你可以使用它作爲一個普通的終端窗口,即發出指令並運行腳本。
如果你想離開會話而不終止它,使用:
Ctrl+a d command (press and hold Ctrl, press and hold a, then press d) to detach from the session.
要查看runnging屏幕的列表:
$ screen -ls
到正在運行的屏幕連接到控制檯:
$ screen -R
當屏幕正在運行時,可以使用以下鍵組合,並將其連接到控制檯。所有關鍵組合開始於按壓控制和同時開始。
ctrl+a d - detach the screen, and let it run without user interface (as described above)
ctrl+a c - create a new terminal
ctrl+a A - set the name of the current terminal
ctrl+a n - switch to next terminal
ctrl+a p - switch to prev terminal
ctrl+a " - list the of terminals