rc.local和python脚本

时间:2011-04-23 10:14:34

标签: python unix ubuntu

我正在尝试在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 个答案:

答案 0 :(得分:3)

尝试将stderr和stdout重定向到/ startuplogfile,如下所示:

/usr/local/bin/python3.2 "/root/Advantage/main.py" >> /startuplogfile 2>&1

您将看到是否发生错误

答案 1 :(得分:2)

绝对不希望该脚本具有世界可写性。你试图在启动时自动以root身份运行它,但由于它是世界可写的,任何人都可以改变脚本来做任何事情 - 这是一个巨大的安全漏洞。