Linux Cómo ejecutar un script de Python al iniciar

Linux Cómo ejecutar un script de Python al iniciar

Linux Ubuntu 14.04 Tiene un script en ~/app/serve.py

Necesito ejecutarlo en esta carpeta. En concha puedo hacer

> cd ~/app && python serve.py

y ejecuta un servidor

Es necesario ejecutarlo en servidores que arrancan en segundo plano. Intenté agregar este comando cd ~/app && python serve.py ~en etc/rc.local (y etc/init.d/rc.local) pero no se inicia.

¿Qué estoy haciendo mal?

Respuesta1

En lugar de agregar cd ~/app && python serve.py/etc/rc.local, intente ingresar la ruta completa. Espera que el proceso de inicio sepa que ~ es su directorio de inicio de alguna manera, pero init comienza como root. Debido a que init comienza como root, busca /el directorio de la aplicación, no su directorio de inicio. Deshágase del ~ utilizando la ruta a su directorio de inicio.

Intente agregar /home/whitecolor/app/serve.pya /etc/rc.local. ( pwdpara encontrar el directorio de su ruta). Deshágase del pythonfrente de su secuencia de comandos server.py agregándolo #!/usr/bin/pythonen la parte superior de su secuencia de comandos. (escriba a which pythonpara encontrar la ruta en caso de que no esté instalado en el lugar habitual)

Editar: Dijiste "ejecutar en segundo plano" y me lo perdí. Para ejecutar un comando en segundo plano, agregue un &después del comando. Entonces, para poner en segundo plano el comando anterior: /home/whitecolor/app/serve.py & Init generalmente no necesita el símbolo de fondo para iniciar un trabajo y ejecutarlo en segundo plano.

La excelente sugerencia de DrDR no necesitaría el mismo &tratamiento después del comando en el inicio cron, ya que se ejecutan en segundo plano de forma predeterminada.

Respuesta2

Nunca tuve la necesidad de probar esto, pero aparentemente los scripts se pueden ejecutar al iniciar el sistema mediante cron agregando una línea similar a la que comienza con @reboot a continuación.

#m  h  dom  mon  dow  command
1   *  *    *    *    someHourlyCommand
@reboot               python /home/<username>/app/serve.py

Tenga en cuenta que cambié ligeramente el comando para eliminar el cd en el directorio. Su situación puede ser diferente, así que haga lo que funcione para usted.

información relacionada