我有一个非常简单的问题。一个以下面开头的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
答案 0 :(得分:2)
默认情况下,init.d
服务的工作目录为/etc/init.d
,请参阅How do I execute an arbitrary script with a working directory of the directory its in?。
<强>解决方案:强>
在Python代码中使用绝对路径,如评论中所述。
在python start_server.py &
启动Python脚本之前,请通过简单的cd /your/path/
更改工作目录。
希望这有帮助!
答案 1 :(得分:2)
如评论中所述:
您在server.out
写了current directory
。
current directory
的{{1}}是/etc/init.d(如linusg所述)。
使用输出文件的绝对路径(到可写位置)将解决问题。