运行 python 来自 rc.local 的脚本不写入文件

Run python script from rc.local does not write file

我想在 Lubuntu 15.04 启动时 运行 一个 python 脚本。此 python 脚本将一些字符串写入放置在 /home/aUser/aFile.txt

中的文本文件中

我的 /etc/rc.local 文件是:

#!/bin/sh -e
python /home/aUser/theScript.py &
exit 0

脚本 /home/aUser/theScript.py 是:

#!/usr/bin/python

f = open('/home/aUser/aFile.txt','w');
f.write("Some string...");
f.close();

实际上 python 脚本做的更多,而 运行 无限循环,这就是为什么我 运行 在后台使用 & 脚本的原因。我当然安装了python:

~$ python --version
   Python 2.7.9

我检查了 /etc/rc.local 是否在启动时被调用,它是,证明:我以这种方式在 /etc/rc.local 中添加了一个测试:

#!/bin/sh -e
python /home/aUser/theScript.py &
exit 0
echo "Test" >> /home/aUser/aTest.txt

并且文件 /home/aUser/aTest.txt 在启动时是 written/created。

所以一切看起来都是正确的,证明:

如果我 运行 手动 ~$ /etc/rc.local 文件 aFile.txt 是正确写入的。

相反,如果我启动(或重新启动)OS,文件不会在启动时写入。

我怀疑这可能是 permissions/user 的问题:我知道 /etc/rc.local 作为 root 是 运行,但即使我设置 rootaUser作为文件的所有者,情况是一样的。此外 运行 /etc/rc.local 中的 python 脚本作为用户 aUser(使用 su 命令)也没有解决问题。

好的,感谢 @Zac 评论,我找到了问题并解决了它。

实际上 python 脚本在写入文件之前尝试打开网络连接:在启动时,当 python 脚本是 运行 来自 /etc/rc.local (所以, 它是 运行), 网络还没有准备好 (可能是因为它是无线网络) 因此引发异常并且整个脚本停止。捕获异常解决问题

所以最后是我的错,(不是)得到 rc.local 的帮助,它没有提供简单的调试方法。