這兩天要在伺服器端一直執行乙個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.log3
2
>&
1
&
說明:1
、
1
是標準輸出(stdout)的檔案描述符,
2
是標準錯誤(stderr)的檔案描述符
1
> python.log 簡化為 > python.log,表示把標準輸出重定向到python.log這個檔案
2
、
2
>&
1
表示把標準錯誤重定向到標準輸出,這裡&
1
表示標準輸出
為什麼需要將標準錯誤重定向到標準輸出的原因,是因為標準錯誤沒有緩衝區,而stdout有。
這就會導致 commond > python.log2
> python.log 檔案python.log被兩次開啟,而stdout和 stderr將會競爭覆蓋,這肯定不是我門想要的
3
、好了,我們現在可以直接關閉shell視窗(我用的是securecrt,用的比較多的還有xshell),而不用再輸入exit這個命令來退出shell了
$ ps aux|grep python
tomener1885
0.1
0.4
13120
4528
pts
/
0
s
15
:
48
0
:
00
python
/
data
/
python
/
server.py
tomener1887
0.0
0.0
5980
752
pts
/
0
s
+
15
:
48
0
:
00
grep python
現在當我們直接關閉shell視窗,再連線上伺服器,檢視python的程序,發現程序還在
但是,在python執行中卻檢視不到輸出!
因為:python的輸出有緩衝,導致python.log3並不能夠馬上看到輸出。
使用-u引數,使得python不啟用緩衝。
所以改正命令,就可以正常使用了
$ nohup python
-
u test.py > out.log
2
>&
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 的檔案...