linux下python後台執行方式

2021-08-15 15:51:34 字數 1588 閱讀 8338

環境:linux、指令碼python、shell指令碼

方法一:指令碼後加&

加了&以後可以使指令碼在後台執行,這樣的話你就可以繼續工作了。但是有乙個問題就是你關閉終端連線後,指令碼會停止執行;

如:nohup python -u xx.py > log.out 

2>&1& 

1、1是標準輸出(stdout)的檔案描述符,2是標準錯誤(stderr)的檔案描述符1> log.out 簡化為 >log.out,表示把標準輸出重定向到log.out這個檔案

2、2>&1 表示把標準錯誤重定向到標準輸出,這裡&1表示標準輸出

方法二:使用nohup在後台執行命令

使用&符號在後台執行命令或指令碼後,如果你退出登入,這個命令就會被自動終止掉。要避免這種情況,你可以使用nohup命令

可以寫乙個指令碼,然後把指令碼提交給伺服器,讓伺服器在後台執行指令碼裡面的語句。假設我們定義了乙個指令碼start.sh,其內容如下:

#!/bin/bash

cd 想要執行檔案的路徑名

python -u ***.py

上述指令碼中,#!/bin/bash是指此指令碼使用/bin/bash來解釋執行下面的語句,其中cd是表示將當前目錄跳到所要執行檔案所在目錄,然後python -u ***.py則表示執行***python檔案,當寫完該指令碼後,我們就可以使用下面的這條命令來執行該指令碼從而讓程式在後台執行:

./start.sh &
在這裡./start.sh表示執行當前目錄下的指令碼start.sh,> result.log表示把原來輸出到控制台的東西都輸出到result.log檔案中,&表示在後台執行

我們通過ps -e命令可以檢視後台執行的程序都有哪些 

上圖我們可以看到,我們的指令碼start.sh和python程式都已經在後台成功執行,然後通過cat result.log | more就可以來檢視原來輸出到控制台的資訊 

注:要想執行python檔案中的某個函式,一定要記得除了要定義該函式外,還要在該檔案中呼叫該函式

退出終端後程式仍繼續執行,**如下

& nohup ./start.sh &  

方法三:使用screen執行命令

通過nohup和&符號在後台執行命令後,即使你退出登入,這個命令也會一直執行。但是,你無法重新連線到這個會話,要想重新連線到這個會話,你可以使用screen命令。.

linux的screen命令提供了分離和重新連線乙個會話的功能。當你重新連線這個會話的時候,你的終端和你分離的時候一模一樣。

方法四:使用at將乙個命令作為批處理執行

使用at命令,你可以讓乙個命令在指定的日期和時間執行,例如要在明天上午10點在後台執行備份指令碼,執行下面的命令:

$ at -f backup.sh 10 am tomorrow  

在批處理模式下執行某些任務需要啟用一些選項。下面的文章會給出詳細解釋:

方法五:使用watch連續地執行乙個命令

要想按乙個固定的間隔不停地執行乙個命令,可以使用watch命令,如下所示:

$ watch df -h  

另外檢視程序確認指令碼是否在繼續執行的命令

ps -ef|grep 指令碼名  

linux 下後台執行python指令碼

這兩天要在伺服器端一直執行乙個python指令碼,當然就想到了在命令後面加 符號 python data python server.py python.log 說明 1 表示把標準輸出 stdout 重定向到 那個檔案,這裡重定向到了python.log 2 表示在後台執行指令碼 這樣可以到達目的...

linux 下後台執行python指令碼

這兩天要在伺服器端一直執行乙個python指令碼,當然就想到了在命令後面加 符號 python data python server.py python.log nohup python home www service public skbot.py 說明 1 表示把標準輸出 stdout 重定向...

Linux下如何後台執行Python程式

問題描述 鏈結伺服器後,想在伺服器上執行乙個耗時特別長的程式 問題是一旦會話結束,程式也就結束了,之前完成工作進度前功盡棄!解決方案 使用nohup命令掛起服務。啟動命令為 nohup python3 u job.py job out.out 2 1 典型範例 例如 我要後台執行mytest.py指...