Tengo este script en mi carpeta de inicio (pi): server.py.
¿Cómo podría hacer que Debian ejecute este script al inicio para no tener que iniciar sesión y ejecutarlo manualmente?
Respuesta1
En el momento en que se escribió esta respuesta por primera vez, Debian (tal como se instala de forma predeterminada) usaba scripts rc "SysV" con el start-stop-daemon
binario. Había un script de ejemplo, en el archivo /etc/init.d/skeleton
, que se podía utilizar como base para el script rc. Una vez que uno tenía su script rc y estaba marcado como ejecutable, el update-rc.d
comando podía usarse para agregarlo a los niveles de ejecución deseados.
Con el paso de los años las cosas han ido cambiando. En 2014, en particular, cambiaron dos cosas:
- El
/etc/init.d/skeleton
script fue reemplazado por el script de ejemplo en lainit-d-script
página del manual (5), que más tarde en 2018 se convirtió en elsolobase disponible cuando/etc/init.d/skeleton
se eliminó por completo. El contenido del esqueleto también cambió significativamente, ya no es necesario que las personas escriban llamadasstart-stop-daemon
o, de hecho, escriban mucho más que algunas asignaciones variables. (Verhttps://unix.stackexchange.com/a/480897/5132.) - El valor predeterminado instalado cambió a systemd y, en su lugar, había que escribir archivos de unidades de servicio systemd (que no tenían que estar marcados como ejecutables) y habilitarlos con
systemctl enable
. Sin embargo, no había ningún archivo de unidad de ejemplo. (Verhttps://github.com/systemd/systemd/issues/10572.)
Entonces, a partir de 2018, debe escribir un archivo de unidad de servicio systemd que (como mínimo) nombre su script (usando un nombre de ruta absoluto) en una ExecStart
configuración. Es posible que desee, aunque la pregunta no especifica una forma u otra, utilizar una User
configuración para que el script se ejecute bajo los auspicios de su cuenta de usuario y no de la del superusuario. Y túpodría, nuevamente dependiendo de cosas no especificadas en la pregunta, es necesario coordinar el orden relativo de invocación de su script y el montaje (automático) de su directorio de inicio si está montado por separado.
Respuesta2
Poner su -c 'SCRIPT' USER
en /etc/rc.local
.