2016-02-23 2 views
2

Я хочу запустить скрипт python при загрузке ubuntu 14.04LTS.Запуск сценария python из rc.local не выполняется

Мой rc.local файл выглядит следующим образом:

Судо /home/hduser/morey/zookeeper-3.3.6/bin/zkServer.sh начать

эхо "тест">/дома/hduser/test3

Судо /home/hduser/morey/kafka/bin/kafka-server-start.sh /home/hduser/morey/kafka/config/server.properties &

эхо "тест" >/home/hduser/test1

/USR/бен/питон /home/hduser/morey/kafka/automate.py &

эхо "тест">/дома/hduser/test2

выход 0

все за исключением того, что мой скрипт 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

Я сделал много исследований, но не смог найти решение

Edit: эхо заявления только для целей тестирования, а второй фактической команды (не учитывая утверждения echo) запускает сервер, который продолжает работать, и даже скрипт python запускает слушатель, который работает в бесконечном цикле, если это какая-либо помощь.

+0

Это Python скрипт будет так более естественно реализуется как '/ путь/SBT«проекта Java-примеров»>/DEV/нуль 2> & 1' в rc.local. Python - это только отвлечение. – msw

ответ

5

Сценарий Python пытается запустить ./sbt. Вы уверены, что, если текущий каталог, когда rc.local работает? Правило всегда использует абсолютные пути в системных сценариях

+0

Большое вам спасибо. Проблема не в использовании абсолютного пути. – aladeen

1

Не запускайте сценарий Python в фоновом режиме, запустите его в фоновом режиме на переднем плане. Не выходите из родительского скрипта. Лучше вызвать другой скрипт из «rc.local», который выполняет всю работу «эхо» и запуска скриптов.

Запустите этот сценарий из «rc.local»; не в фоновом режиме (нет &).

Вам не нужно «sudo», поскольку «rc.local» запускается как root.

+0

Я пробовал это без выражений эха и запускал скрипт не в фоновом режиме, и все равно он не работает – aladeen

1

Если вы хотите запустить скрипт python при загрузке системы, есть альтернативное решение, которое я использовал.

1: Создать файл ш как sample.sh и копировать вставить следующее содержание

#!/bin/bash 
clear 


python yourscript.py 

2: Теперь добавить задание при перезагрузке.Если вы используете Linux, вы можете использовать следующим образом

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

и перезагрузить устройство

Смежные вопросы