Esta pregunta se ha hecho varias veces antes, pero no parecía que funcionara con la información existente.
Mi Pi ejecuta Raspbian. Tengo un script de Python llamado dnscheck.py que se repite para siempre.
Lo necesito para correr en el arranque. Sé que tengo que crear un archivo .sh que contenga algo como
sudo python dnscheck.py &
Lo que no sé es dónde debería estar este archivo o si debería contener algo más. Sé acerca de la carpeta init.d, pero al ver el ejemplo esqueleto, imagino que debería haber una manera más simple de hacer esta tarea simple.
Respuestas:
Si desea controlar el proceso con comandos como iniciar, detener, reiniciar, etc., usar el script de esqueleto y modificarlo para sus propósitos podría ser la mejor opción.
Si solo desea que se inicie el proceso, ingrese el comando
/etc/rc.local
. (No tengo mi RPi a mano, pero leí en línea que hay una línea de 'salida 0' allí, deberías poner tu comando sobre esta línea)fuente
rc.local
ejecuta root. También debe especificar la ruta completa al script, obviamente. También debe agregar&
al final para que el script se bifurque, por ejemplo/path/to/foobar.py &
.&
? Porque cuando lo uso sin él, todo sigue funcionando como se esperaba.Mueva su script (lo guardaremos en el archivo
dnscheck
)/etc/init.d/
y establezca los permisos para que se pueda ejecutar:Agregue etiquetas de inicio LSB a la parte superior de su script. Probablemente desee cambiar Required-Start / Stop y las etiquetas de descripción para que se ajusten a su script.
Luego cree los enlaces simbólicos ejecutando
fuente
/etc/rc.local
es insuficiente.Hay muchas maneras de hacer esto, por supuesto, pero no olvides usarlo
cron
. Si coloca una@reboot
línea en su crontab, ese comando se ejecutará en cada reinicio.Para probar, acabo de agregar la siguiente línea a mi crontab de usuario con
crontab -e
:@reboot echo "$(date)" >> ~/boot.txt
La ventaja de este método es que puede llamar al trabajo según sea necesario en otros intervalos además del tiempo de arranque, y no tiene que editar scripts de inicio.fuente
si usa el archivo rc.local, esto puede ser útil para solucionar problemas. Puede agregar líneas de registro para registrar errores (stderr) y la salida del comando (stdout) en el archivo de registro. Según este ejemplo, ese archivo se guarda en /tmp/rc.local.log
Leer mas
fuente
Estoy realmente sorprendido de djb daemontools no se menciona aquí. Daemontools supervisa adecuadamente el proceso y puede agregar funciones interesantes como el registro rotado automáticamente. TL; DR si no está familiarizado con nada de esto, su proceso se reiniciará cada vez que falle y se iniciará automáticamente cuando su Pi se encienda. Esto es genial si escribiste un programa de Python malo que tiene modos de falla pero no quieres que simplemente muera si se encuentra un error.
Instalar:
Luego siga los pasos para crear procesos demonizados:
En su mayoría es tan simple como copiar un
run
script en/etc/service/<my_custom_service_name>
Otra ventaja: ¡puede ejecutarlo como cualquier usuario o root! Detalles en el enlace.FWIW Tenía un proyecto Pi donde tenía 3 procesos diferentes de python (cada uno tenía un ciclo de ejecución usando el tiempo de CPU, por lo que al usar 3 procesos permití que cada proceso aprovechara 1 núcleo de CPU). Daemontools me permitió asegurarme de que los 3 se ejecutarían automáticamente y seguirían funcionando después de enchufar el Pi.
fuente
Aquí está la solución que uso constantemente.
Crea un archivo de escritorio
escriba lo siguiente en él
pegue este archivo en el
y reinicie su raspberry pi y debería ejecutar automáticamente su programa en una nueva terminal
fuente
Para usar un archivo .py, simplemente ponga la línea
#!/usr/bin/python
al comienzo de su archivo. Luego hazlo ejecutable conchmod +x filename
. A continuación, añadir la línea/path/to/file.py &
de/etc/rc.local
antes de laexit 0
línea (el intercambio/path/to/file.py
con la ruta a la secuencia de comandos). Esto hará que su script de Python se ejecute al final del arranque.fuente
Aquí hay un método aún más fácil que funcionó para mí. Modifique el inicio automático en LXDE.
Abra una terminal y edite el archivo de inicio automático de la siguiente manera:
agregue la siguiente línea de texto en la parte inferior (modifique la ruta según sea necesario a donde se encuentra su example.py)
ctr-x, y guardar. Es posible que deba hacer que el script de Python sea ejecutable de la siguiente manera:
referencia para el inicio automático en LXDE y referencia para hacer que Python sea ejecutable
fuente
Estas soluciones no funcionaron para mí al intentar iniciar un script de Python ejecutando Feh. Lo siguiente funcionó. Comienza una secuencia de comandos después de iniciar sesión.
Abra una sesión de terminal y edite el archivo
sudo nano /etc/profile
Agregue la siguiente línea al final del archivo
/home/pi/your_script_name.sh
reemplace el nombre y la ruta del script con el nombre y la ruta correctos del script de inicio. Guardar y Salir
Presione Ctrl + X para salir del editor nano seguido de Y para guardar el archivo.
Así es como se veía mi script.sh:
Creo que hice tanto el script.sh como el script.py ejecutable usando el chmod
fuente