从rc.local运行python脚本不会执行

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

我的rc.local文件如下所示:

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

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

退出0

除了我的python脚本之外,所有的东西甚至在运行python脚本之后都能正常工作,但是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() 

如果单独执行的话,它可以很好地工

我经历了以下问题 , 链接

我做了很多研究,但找不到解决scheme

编辑:echo语句仅用于testing目的,而第二个实际的命令(不考虑echo语句)正在启动一个服务器,它将继续运行,甚至python脚本启动一个运行在无限循环的监听器,如果这是任何帮帮我

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

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

从“rc.local”运行该脚本; 不在后台(no&)。

你不需要“sudo”,因为“rc.local”是以root身份运行的。

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

1:创建sh文件,如sample.sh,复制粘贴内容

 #!/bin/bash clear python yourscript.py 

2:现在重新启动一个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 

并重新启动您的设备