运行 python 来自 rc.local 的脚本不执行

Run python script from rc.local does not execute

我想在 ubuntu 14.04LTS 的启动时 运行 一个 python 脚本。

我的rc.local文件如下:

sudo /home/hduser/morey/zookeeper-3.3.6/bin/zkServer.sh start

echo "test" > /home/hduser/test3

sudo /home/hduser/morey/kafka/bin/kafka-server-start.sh /home/hduser/morey/kafka/config/server.properties &

echo "test" > /home/hduser/test1

/usr/bin/python /home/hduser/morey/kafka/automate.py &

echo "test" > /home/hduser/test2

exit 0

除了我的 python 脚本之外的所有东西都工作正常,甚至 运行 宁 python 脚本之后的 echo 语句,但 python 脚本似乎没有 运行. 我的python脚本如下

import sys
from subprocess import Popen, PIPE, STDOUT

cmd = ["sudo", "./sbt", "project java-examples", "run"]
proc = Popen(cmd, shell=False, stdout=PIPE, stdin=PIPE, stderr=STDOUT)
proc.communicate(input='1\n')
proc.stdin.close()

如果单独执行,效果非常好。

我经历了以下questions , link

我做了很多研究但找不到解决方案

编辑:echo 语句仅用于测试目的,第二个实际命令(不考虑 echo 语句)正在启动一个保持 运行ning 的服务器,甚至 python 脚本启动一个 运行 无限循环的侦听器,如果有帮助的话

不要运行 Python 脚本在后台,运行 它在前台。不要退出其父脚本。最好从 "rc.local" 调用另一个脚本来完成 "echo" 和脚本启动的所有工作。

运行 来自 "rc.local" 的脚本;不在后台(没有 &)。

您不需要 "sudo",因为 "rc.local" 是 运行 作为 root。

Python 脚本尝试启动 ./sbt。你确定如果rc.local时的当前目录运行会怎么样?规则是在系统脚本中始终使用绝对路径

如果你想在系统启动时 运行 python 脚本有一个我已经使用过的替代解决方案。

1:像sample.sh一样创建sh文件并复制粘贴以下内容

#!/bin/bash
clear


python yourscript.py

2:现在在 reboot.If 添加一个 cron 作业,您正在使用 linux 您可以按以下方式使用

a:Run crontab -e(Install sudo apt-get install cron)
b:@reboot /full path to sh file > /home/path/error.log 2>&1

并重启您的设备