Python sys.stdout不适用于init.d脚本

Python sys.stdout不适用于init.d脚本,python,linux,bash,Python,Linux,Bash,我有一个非常简单的问题。以以下内容开头的python脚本: import sys sys.stdout = open("server.out", 'w') 如果我直接向终端输入此命令 python start_server.py & 它写入server.out文件。 如果输入service tdserver start,则init.d脚本执行的所有操作如下: python start_server.py & 同样的命令,没有别的。然而,在本例中,标准输出不会写入server

我有一个非常简单的问题。以以下内容开头的python脚本:

import sys
sys.stdout = open("server.out", 'w')
如果我直接向终端输入此命令

python start_server.py &
它写入
server.out
文件。 如果输入
service tdserver start
,则
init.d
脚本执行的所有操作如下:

python start_server.py &
同样的命令,没有别的。然而,在本例中,标准输出不会写入
server.out


为什么??没有进程锁定文件,已确认脚本已使用
ps-aux停止。默认情况下,
init.d
服务的工作目录为
/etc/init.d
,请参阅

解决方案:

  • 在Python代码中使用绝对路径,如注释中所述

  • 在通过
    Python start\u server.py&
    启动Python脚本之前,通过简单的
    cd/your/path/
    更改工作目录


  • 希望这有帮助

    如评论中所述:

    您正在将文件写入
    当前目录中的
    服务器.out

    init.d
    当前目录是/etc/init.d(正如linusg所提到的)


    使用输出文件的绝对路径(到可写位置)将解决此问题。

    请尝试使用文件名的完整路径,例如open(“/tmp/server.out”,“w”),并检查是否在/tmpIt中找到该文件修复了我的问题。我想知道默认的exec dir是什么。请将其作为答案添加,以便我可以接受。