rc.local 和 Python 脚本
我想在Ubuntu Server 10.10机器启动时自动运行一个脚本。
我的rc.local文件的相关部分看起来是这样的:
/usr/local/bin/python3.2 "/root/Advantage/main.py" >> /startuplogfile
exit 0
如果我从/etc目录运行./rc.local,一切都正常,它会在/startuplogfile中写入以下内容:
usage: main.py [--loop][--dry]
为了测试,这正是我需要的结果。但是当我重启电脑时,它不会在startuplogfile中写入任何内容。我猜测在启动时rc.local运行的时候,脚本并没有被启动。
我确认rc.local确实在启动时被调用了,我在文件中加了'touch /rclocaltest'。结果如预期,目录被创建了。
我还用另一个简单的python脚本测试了rc.local,这个脚本会在根目录创建一个文件,并打印到/startuplogfile。从终端运行和重启后,它都能正常工作。
我的执行权限设置如下:
-rwxrwxrwx 1 root root 4598 2011-04-22 19:09 main.py
我完全不知道为什么会这样,我尝试了所有能想到的方法来解决这个问题。有没有人知道可能是什么原因,我真的没什么头绪了。
补充:我忘了提到,我只通过ssh登录到这台机器。我不确定这是否有影响,因为据我所知,rc.local是在登录之前执行的。
补充:我注意到这个帖子有点混乱,所以让我总结一下:
- 我确认rc.local在启动时被调用
- 如果手动调用rc.local,一切都按预期工作
- 权限设置正确
- 一个测试用的python脚本在启动时与rc.local一起正常工作
- 我的实际python脚本只有在手动调用rc.local时才会运行,而不是在启动时
2 个回答
3
你绝对不想让这个脚本被所有人都能写。你是想在开机时自动以管理员身份运行它,但因为它是所有人都能写的,任何人都可以修改这个脚本,让它做任何事情——这可是个巨大的安全隐患。
3
试着把错误信息和正常输出都重定向到/startuplogfile这个文件里,方法如下:
/usr/local/bin/python3.2 "/root/Advantage/main.py" >> /startuplogfile 2>&1
这样你就能看到如果发生了错误。