我想在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身份运行,但即使我将root
或aUser
设置为文件的所有者,情况是一样的。另外在/etc/rc.local
中运行python脚本,因为用户aUser
(使用su
命令)无法解决问题。
答案 0 :(得分:1)
好的,我发现问题并修复了,感谢 @Zac 评论。
实际上python脚本在写入文件之前尝试打开网络连接:在启动时,当从/etc/rc.local
运行python脚本时(因此,它运行),网络仍然没有准备好(可能因为它是无线网络)因此引发异常并且整个脚本停止。捕获异常可以解决问题。
所以最后这是我的错,(不)由rc.local提供帮助,它不提供简单的调试方法。