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

时间:2016-02-23 10:20:46

标签: python linux shell ubuntu rc

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

我的rc.local文件如下:

  

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

     回声"测试" > / home / hduser / test3

     

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

     回声"测试" > /家庭/ hduser / TEST1

     

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

     回声"测试" > / home / hduser / test2

     

退出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()

单独执行时效果很好。

我浏览了以下questionslink

我做了很多研究,但无法找到解决方案

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

3 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:1)

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

从" rc.local&#34 ;;运行该脚本不在背景中(没有&)。

你不需要" sudo" as" rc.local"以root身份运行。

答案 2 :(得分:1)

如果你想在系统启动时运行python脚本,我会使用另一种解决方案。

1:创建像sample.sh这样的sh文件,并在内容后复制粘贴

#!/bin/bash
clear


python yourscript.py

2:现在在reboot时添加一个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

然后重新启动设备