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
来删除python
serve.py 脚本前面的。(如果它没有安装在正常位置,请键入 a 来查找路径)#!/usr/bin/python
which 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 进入目录的麻烦。您的情况可能有所不同,因此请按照适合您的方式操作。