linux 下后台運行python腳本


這兩天要在服務器端一直運行一個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.log  2> python.log 文件python.log被兩次打開,而STDOUT和             STDERR將會競爭覆蓋,這肯定不是我門想要的
3、好了,我們現在可以直接關閉shell窗口(我用的是SecureCRT,用的比較多的還有Xshell),而不用再輸入exit這個命令來退出shell了

$ ps aux|grep python
tomener 1885  0.1  0.4  13120  4528 pts/0    S    15:48   0:00 python /data/python/server.py
tomener 1887  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 &

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM