运行 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
并重启您的设备
我想在 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
并重启您的设备