1. 程式人生 > 程式設計 >在python中使用nohup命令說明

在python中使用nohup命令說明

nohup功能

nohup 是 no hang up 的縮寫,就是不掛斷的意思。

如果你正在執行一個程序,而且你覺得在退出帳戶時該程序還不會結束,那麼可以使用nohup命令,該命令可以在你退出帳戶/關閉終端之後繼續執行相應的程序。

例項操作

例如執行django專案

1.例如,進入專案目錄:

cd ding_month_1

2.執行下面程式:

nohup python ./manage.py runserver 0.0.0.0:8080&

3.此時,已經運行了。

注意事項:

原程式的的標準輸出被自動改向到當前目錄下的nohup.out檔案,起到了log的作用。在nohup執行成功後直接點選關閉程式按鈕關閉終端,會斷掉該命令對應的session,導致nohup對應的程序被通知一起shutdown。

所以在使用nohup命令後臺執行命令之後,需要使用exit正常退出當前賬戶,這樣才能保證命令一直在後臺執行。

補充知識:Python後臺執行—nohup及2>&1詳解

一. 程式碼

nohup python my.py >> /usr/local/python/xxf/my.log 2>&1 &

nohup tomcat.sh > /dev/null 2>&1 &

二.nohup命令

nohup指不斷地執行,是no hang up的縮寫,指不間斷,不掛斷。執行一個程序的時候,不想讓其在你退出賬號時關閉,即可用nohup。

nohup在不規定的情況下,所以輸出內容會到nohup.out中

三.2>&1

0 表示stdin標準輸入,使用者鍵盤輸入的內容

1 表示stdout標準輸出,輸出到顯示屏的內容

2 表示stderr標準錯誤,報錯內容

2>&1是一個整體,>左右不能有空格,即將錯誤內容重定向輸入到標準輸出中去。

四. 整體意義及&

&為後臺執行

第一條程式碼,以python環境不間斷的執行my.py這個指令碼,並且將指令碼輸出的內容重定向輸入my.log中(>>意為追加,如果用>會讓其中的內容清空)

my.py >> my.log 和my.py 1>>my.log相同,只是1(標準輸入)被省略了,而後面的my.log 2>&1 又將2(錯誤內容)輸入到標準輸出,然後前面的標準輸出又輸入到my.log中,意思錯誤和標準內容都會輸出到my.log中,其實程式碼可拆成兩塊。

nohup python my.py 1>> /usr/local/python/xxf/my.log &
nohup python my.py 2>> /usr/local/python/xxf/my.log &

上面程式碼就是將錯誤和標準都輸出到my.log,最初的程式碼只是簡化了。

而加2>&1中的&是為了區別檔案1和1(標準輸出),假如為2>1,那麼不就成了將錯誤內容輸出到檔案1中。

nohup tomcat.sh > /dev/null 2>&1 &也是一樣的,將錯誤和標準全部丟入/dev/null中,全部銷燬。

以上這篇在python中使用nohup命令說明就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。