Quiero ejecutar un script de python en el arranque de ubuntu 14.04LTS.
Mi archivo rc.local es el siguiente:
sudo /home/hduser/morey/zookeeper-3.3.6/bin/zkServer.sh inicio
echo "prueba" > /inicio/usuariohd/prueba3
sudo /home/hduser/morey/kafka/bin/kafka-server-start.sh /home/hduser/morey/kafka/config/server.properties &
echo "prueba" > /home/usuariohd/prueba1
/usr/bin/python /home/hduser/morey/kafka/automate.py &
echo "prueba" > /inicio/usuariohd/prueba2
salida 0
todo, excepto mi secuencia de comandos de python, funciona bien, incluso la declaración de eco después de ejecutar la secuencia de comandos de python, pero la secuencia de comandos de python no parece ejecutarse. Mi script de python es el siguiente
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()que funciona perfectamente bien si se ejecuta individualmente.
Revisé las siguientes preguntas , enlace
Investigué mucho pero no pude encontrar una solución.
Editar: las declaraciones de eco son solo para fines de prueba, y el segundo comando real (sin considerar las declaraciones de eco) está iniciando un servidor que continúa ejecutándose, e incluso el script de python inicia un oyente que se ejecuta en un bucle infinito, si es que hay alguno. ayudar
El script de Python intenta iniciar ./sbt . ¿Está seguro de qué sucede si se ejecuta el directorio actual cuando se ejecuta rc.local ? La regla es siempre usar rutas absolutas en los scripts del sistema.
No ejecute el script de Python en segundo plano, ejecútelo en primer plano. No salga de su secuencia de comandos principal. Es mejor llamar a otro script desde "rc.local" que hace todo el trabajo de "echo" e iniciar el script.
Ejecute ese script desde "rc.local"; no en segundo plano (sin &).
No necesita "sudo" ya que "rc.local" se ejecuta como root.
Si desea ejecutar el script de python en el arranque del sistema, hay una solución alternativa que he usado.
1: Cree un archivo sh como sample.sh y copie y pegue el siguiente contenido
#!/bin/bash clear python yourscript.py2: Ahora agregue un trabajo cron al reiniciar. Si está usando Linux, puede usar lo siguiente
a:Run crontab -e(Install sudo apt-get install cron) b:@reboot /full path to sh file > /home/path/error.log 2>&1Y reinicia tu dispositivo