Python sys.stdout不适用于init.d脚本
我有一个非常简单的问题。以以下内容开头的python脚本: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
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是什么。请将其作为答案添加,以便我可以接受。