[英]Python sys.stdout not working for init.d script
我有一個非常簡單的問題。 一個以下面的開頭的python腳本:
import sys
sys.stdout = open("server.out", 'w')
如果我直接輸入此命令到終端
python start_server.py &
它寫入server.out
文件。 如果我輸入service tdserver start
,那么所有的init.d
腳本都是這樣的:
python start_server.py &
同樣的命令,沒有別的。 然而,在這種情況下,stdout不會寫入server.out
為什么? 沒有進程鎖定文件,確認腳本已使用ps -aux
停止
默認情況下, init.d
服務的工作目錄是/etc/init.d
,請參閱如何使用其所在目錄的工作目錄執行任意腳本? 。
解決方案:
在Python代碼中使用絕對路徑,如注釋中所述。
在通過python start_server.py &
啟動Python腳本之前,通過簡單的cd /your/path/
更改工作目錄。
希望這可以幫助!
正如評論中所討論的:
您正在current directory
中寫入server.out
。
init.d
的current directory
是/etc/init.d(如linusg所述)。
使用輸出文件的絕對路徑(到可寫位置)將解決問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.