壹、nohup
nohup,即 no hangup,nohup 的用途就是讓提交的命令忽略 hangup 信號,從而使我們的進程避免中途被中斷。它可以讓 python 腳本和服務器連接端的 session 分離,以達到退出後依舊執行:
$ chmod +x /your_path/yourscript.py ? # 先設置可執行權限$ nohup python /your_path/yourscript.py# 切記退出的 Terminal 的時候,不要 ctrl+c 退出,而是直接關閉,不然 Nohup 就被妳關閉了。
如何關閉這個壹直執行的進程呢:
# 找到對應的進程 PID
$ ps -ef | grep python
# 返回內容如:
user ?2430 1 ?0 Jul03 ?00:00:01 /usr/bin/python -tt /usr/sbin/yum-updatesd
# kill 掉該進程即可:
$ kill -9 2430
PS:nohup 在服務器重啟之後就失效了,所以並不完美。
二、將命令寫入 Linux 啟動腳本
Linux 在啟動的時候會執行 /etc/rc.local 裏面的腳本,所以只要在這裏添加執行命令就可以:
$ vim /etc/rc.local
# 如果是 Centos 添加以下內容:
/your_path/python3.4 /your_path/yourscript.py
# 以上內容需要添加在 exit 命令前,而且由於在執行 rc.local 腳本時,PATH 環境變量未全部初始化,因此命令需要使用絕對路徑。
PS:這種方式的缺點是如果腳本掛了,那麽不會自動重新啟動。
三、使用 Supervisor 進程管理工具
詳見這篇文章:使用 Supervisor 管理服務器後臺進程,在服務器重啟和腳本出錯後,可以完美重啟,推薦。