我怎样才能让特定的 Python 脚本在系统启动时自动运行直到关闭?
应该有一些简单的方法,我可以将该小脚本放入某个初始化脚本或类似的东西中,这样无需我调用它就可以继续运行。
我正在使用 Ubuntu 10.04,如果这有区别的话。
答案1
将脚本放入 /etc/init.d/ ? http://embraceubuntu.com/2005/09/07/adding-a-startup-script-to-be-run-at-bootup/
答案2
您可以(在 Gnome 下)转到系统>>首选项>>会话并在此处添加您的脚本。
答案3
您提到需要在用户登录后运行它,但它会一直运行到系统关闭。这有点矛盾,因为通常在 X 会话中运行的东西会在会话关闭时停止。此外,如果您希望它在非 X-windows 会话上运行,您必须非常小心它在多次运行中的反应,或者小心只启动一次。
话虽如此,这里有一些运行脚本的方法:
- 在用户 crontab 中使用“@reboot”指定时间,例如:
@reboot /path/to/script
这将使其以指定用户身份运行,并在系统启动时启动并运行,直到它死亡或系统关闭。 - 进入“设置”应用程序(XFCE:应用程序 -> 设置 -> Xfce 4 设置,GNOME:系统 -> 首选项等)并修改为您的会话启动的应用程序。您可以添加一个脚本作为会话的一部分运行。这将在您的会话运行时启动并运行,但如果脚本终止,它将不会重新启动。
- 会话脚本可以由在后台运行 Python 程序的脚本包装,以便它在会话注销后继续运行,但您必须确保如果用户注销并重新登录,他们不会启动多个副本。
- 如果您希望它通过 SSH 等方式从 shell 会话运行,而不是通过 X windows 会话运行,则可以将其放入 .profile(.bash_profile、.zprofile 等)。但您需要像上面一样将其置于后台,并确保没有运行多个副本。
- 您可以将其放入 /etc/rc.local 并以用户身份运行它(通过“su”),但这会在启动时启动,而不是登录时启动。就我个人而言,我建议使用 cront+@reboot。
- 您可以在“/etc/init”中创建一个 upstart 脚本,这将使其在启动时启动,如上所示,但如果脚本因任何原因终止,您可以让它重新启动。如果您需要确保它继续运行,这是最好的选择。