2011-04-23 78 views
2

我想在Ubuntu Server 10.10机器上启动启动脚本。rc.local和python脚本

我rc.local中看起来像这样的相关部分:

/usr/local/bin/python3.2 "/root/Advantage/main.py" >> /startuplogfile 
exit 0 

如果我从/ etc一切工作只是罚款./rc.local运行,并将其写入以下内容/ startuplogfile:

usage: main.py [--loop][--dry] 

出于测试目的,这正是需要发生的事情。当我重新启动计算机时,它不会写入任何启动日志文件。我试图猜测,在启动时运行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 S作为预期设定CRIPT将只在启动时运行 如果rc.local中手动调用,而不是

回答

3

尝试重定向标准错误和stdout到/ startuplogfile这样的:

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

如果发生错误,你会看到

+0

我会立即尝试。你能帮我一个忙,并解释语法吗?我很好奇。 – 2011-04-23 12:02:09

+0

这非常有帮助,我现在更清楚地了解发生了什么。果然,错误来自python脚本。非常感谢 – 2011-04-23 13:01:37

+0

stderr(错误被记录)是2。标准输出(标准输出被记录的位置)是1,可以放在文件中。在编写2>&1时,您将stderr重定向到stdout。 – 2011-04-23 15:06:16

2

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

+0

你是对的,谢谢你。我只是全力以赴做这项工作,一旦发生这种情况,我将开始锁定事情! – 2011-04-23 12:01:35