簡體   English   中英

Python sys.stdout不適用於init.d腳本

[英]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 ,請參閱如何使用其所在目錄的工作目錄執行任意腳本?

解決方案:

  1. 在Python代碼中使用絕對路徑,如注釋中所述。

  2. 在通過python start_server.py &啟動Python腳本之前,通過簡單的cd /your/path/更改工作目錄。

希望這可以幫助!

正如評論中所討論的:

您正在current directory中寫入server.out

init.dcurrent directory是/etc/init.d(如linusg所述)。

使用輸出文件的絕對路徑(到可寫位置)將解決問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM