2012-12-03 285 views
2

我使用的是Debian,我有一个python脚本,我希望在rc.local期间运行它,以便在启动时运行。我已经有了一个可以运行和终止的测试文件。将Python脚本作为启动脚本运行时结束?

问题是这个文件最终应该无限期地使用Scheduler运行。它的工作是进行串行读取,对这些读取进行少量处理,并插入到MySQL数据库中。不过,如果需要进行更改,我无法取消脚本以获得登录提示,因为我无法使用Ctrl + C(^ C)提前终止测试脚本,所以我很紧张。

我的希望是有一些命令,我​​只是失踪,将实现这一点。是否有另一个关键命令,我会错过,将终止python脚本并结束rc.local?

谢谢。

编辑:另一个可能的解决方案,这将有助于我在这里是如果有一种方法在启动时在后台启动一个python脚本。所以它会启动脚本,然后允许登录,同时继续在后台运行脚本。

我开始认为这是不可能实现的,所以其他建议来完成类似于我所要做的事情也会有所帮助。

再次感谢。

+0

Ctrl + C应该正常终止一个Python脚本,除非你捕捉到所有异常或类似的东西(因为Python将Ctrl + C解释为一个'InterruptException')。 –

+0

我可以在启动后或通过空闲模式从shell中运行脚本时终止脚本。在启动时通过/etc/rc.local运行它时,我无法终止脚本。当我按下Ctrl + C时,它会在shell中显示一个^ C,但不会终止。 –

回答

1

似乎这只是我的一个愚蠢的错误。

我意识到这一点的全部意义在于允许python脚本在启动过程中作为后台进程运行,所以我在脚本调用结尾处添加了“&”,就像从shell和中提琴运行时那样我可以通过按“Enter”进入密码提示。

我想把这个答案放在这里,以防万一这可能是可怕的错误,但它完成了我所寻找的东西。

0

Making scripts run at boot time with Debian

  1. 把你的脚本/etc/init.d/。因此,如果您的脚本位于名为my_script的文件中,它应该位于/etc/init.d/my_script

  2. 以root身份运行update-rc.d my_script defaults

  3. 不要忘记让脚本可执行并包含shebang。这意味着脚本的第一行应该是#!/usr/bin/python

+0

谢谢。我更喜欢将脚本调用添加到/etc/rc.local,以便它是引导过程中最后一次调用的东西。 –