Linux 如何在启动时运行 Python 脚本

Linux 如何在启动时运行 Python 脚本

Linux Ubuntu 14.04 在 ~/app/serve.py 中有一个脚本

需要在此文件夹中运行它。在 shell 中我可能会这样做

> cd ~/app && python serve.py

它运行一个服务器

需要在服务器启动时在后台运行它。尝试cd ~/app && python serve.py ~在 etc/rc.local(和 etc/init.d/rc.local)中添加此命令,但它没有启动。

我究竟做错了什么?

答案1

不要添加cd ~/app && python serve.py/etc/rc.local,尝试输入整个路径。您期望 init 进程知道 ~ 是您的主目录,但 init 以 root 身份启动。因为 init 以 root 身份启动,所以它查找的/是应用程序目录而不是您的主目录。使用您的主目录的路径来删除 ~。

尝试添加 /home/whitecolor/app/serve.py/etc/rc.local(以找到您的路径目录。)通过在脚本顶部添加pwd来删除pythonserve.py 脚本前面的。(如果它没有安装在正常位置,请键入 a 来查找路径)#!/usr/bin/pythonwhich python

编辑:您确实说过“在后台运行”,但我没注意到。要在后台运行命令,请&在命令后添加一个。因此,要将上面的命令置于后台: /home/whitecolor/app/serve.py & Init 通常不需要后台符号来启动作业并在后台运行它。

DrDR 的优秀建议是不需要&在 cron 启动中的命令后进行相同的处理,因为它们默认在后台运行。

答案2

我从来没有尝试过这个,但显然可以通过 cron 在系统启动时运行脚本,通过添加类似于下面以 @reboot 开头的行。

#m  h  dom  mon  dow  command
1   *  *    *    *    someHourlyCommand
@reboot               python /home/<username>/app/serve.py

注意,我稍微修改了命令,以消除 cd 进入目录的麻烦。您的情况可能有所不同,因此请按照适合您的方式操作。

相关内容