我想在ubuntu 14.04LTS启动时运行一个python脚本。
我的rc.local文件如下:
sudo /home/hduser/morey/zookeeper-3.3.6/bin/zkServer.sh start
回声"测试" > / home / hduser / test3sudo /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()
单独执行时效果很好。
我做了很多研究,但无法找到解决方案
编辑:echo语句仅用于测试目的,第二个实际命令(不考虑echo语句)是启动一个继续运行的服务器,甚至python脚本启动一个在无限循环上运行的监听器,如果这是任何帮助
答案 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
然后重新启动设备