从rc.local运行python脚本不会写文件

时间:2015-07-31 13:01:22

标签: python linux shell ubuntu rc

我想在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。

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

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

相反,如果我启动(或重启)操作系统,则不会在启动时写入文件。

我怀疑这可能是权限/用户的问题:我知道/etc/rc.local以root身份运行,但即使我将rootaUser设置为文件的所有者,情况是一样的。另外在/etc/rc.local中运行python脚本,因为用户aUser(使用su命令)无法解决问题。

1 个答案:

答案 0 :(得分:1)

好的,我发现问题并修复了,感谢 @Zac 评论。

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

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