linux 下後台執行python指令碼

2021-09-17 01:13:18 字數 2291 閱讀 5407

這兩天要在伺服器端一直執行乙個python指令碼,當然就想到了在命令後面加&符號

$ python/data/python/server.py >python.log &

說明:1、 > 表示把標準輸出(stdout)重定向到 那個檔案,這裡重定向到了python.log

2、 & 表示在後台執行指令碼

這樣可以到達目的,但是,我們退出shell視窗的時候,必須用exit命令來退出,否則,退出之後,該程序也會隨著shell的消失而消失(退出、關閉)

使用nohup(not hang up):

$ nohup python/data/python/server.py > python.log32>&1&

說明:11是標準輸出(stdout)的檔案描述符,2是標準錯誤(stderr)的檔案描述符

1> python.log 簡化為 > python.log,表示把標準輸出重定向到python.log這個檔案

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

為什麼需要將標準錯誤重定向到標準輸出的原因,是因為標準錯誤沒有緩衝區,而stdout有。

這就會導致  commond > python.log2> python.log 檔案python.log被兩次開啟,而stdout和             stderr將會競爭覆蓋,這肯定不是我門想要的

3、好了,我們現在可以直接關閉shell視窗(我用的是securecrt,用的比較多的還有xshell),而不用再輸入exit這個命令來退出shell了

$ ps aux|grep python

tomener18850.10.4131204528pts/0s15:480:00python/data/python/server.py

tomener18870.00.05980752pts/0s+15:480:00grep python

現在當我們直接關閉shell視窗,再連線上伺服器,檢視python的程序,發現程序還在

但是,在python執行中卻檢視不到輸出!

因為:python的輸出有緩衝,導致python.log3並不能夠馬上看到輸出。

使用-u引數,使得python不啟用緩衝。

所以改正命令,就可以正常使用了

$ nohup python-u test.py > out.log2>&1&

linux下後台執行MATLAB

後台執行matlab指令碼檔案的方法 nohup 實現功能 1.字元環境下執行matlab.2.字元環境下執行matlab指令碼檔案,指令碼檔案無影象的螢幕輸出。3.指令碼檔案需長時間執行,執行結果輸出到檔案。matlab的標準重定向到另乙個檔案。4.客戶端退出登陸後,matlab保持執行,直到指令...

Linux下後台執行程式

一 為什麼要使程式在後台執行 我們計算的程式都是週期很長的,通常要幾個小時甚至乙個星期。我們用的環境是用 putty 遠端連線到日本 linux 伺服器。所以使程式在後台跑有以下三個好處 1 我們這邊是否關機不影響日本那邊的程式執行。不會像以前那樣,我們這網路一斷開,或一關機,程式就斷掉或找不到資料...

linux下python後台執行方式

環境 linux 指令碼python shell指令碼 方法一 指令碼後加 加了 以後可以使指令碼在後台執行,這樣的話你就可以繼續工作了。但是有乙個問題就是你關閉終端連線後,指令碼會停止執行 如 nohup python u xx.py log.out 2 1 1 1是標準輸出 stdout 的檔案...