Ejecutar Python Script al arrancar como un usuario particular

Ejecutar Python Script al arrancar como un usuario particular

Quiero ejecutar un script de Python al arrancar como un usuario en particular.

El script es un servidor (escucha en un socket, atiende solicitudes, etc.) y debe ejecutarse en segundo plano, con cualquier salida preferiblemente canalizada a un archivo de registro.

Mi enfoque actual es agregar una entrada al final de rc.local como esta:

su -l usr -c 'script.py arg1 arg2 &> logfile.log &'

El problema: en el script tengo varias declaraciones impresas en el script. Nunca aparecen en el archivo de registro. He intentado

su -l usr -c 'script.py arg1 arg2 &> logfile.log &'

su -l usr -c 'script.py arg arg &> logfile.log &' &> secondLogfile.log &

su -l usr -c 'script.py arg arg &> logfile.log &'

su usr -c 'script.py arg arg &> logfile.log &'

Tengo la sensación de que me falta algo básico. Tal vez lo estoy haciendo de forma totalmente equivocada.

El sistema es Fedora 15, el script es Python3 y se ejecuta bien desde la línea de comandos como usuario. El usuario tiene permisos de escritura en la carpeta a la que quiero redirigir la salida. (Lo descarté haciendo la carpeta 777).

Intenté ejecutar el script de Python como un servicio Systemd, pero tenía problemas para que mi script pudiera tomar un socket para escuchar. (arroja un error del sistema operativo sobre el socket en uso si habilité el servicio systemd en el arranque, mientras que si ejecuté systemctl start script.service después del arranque, todo funcionó bien).

¿Cómo puedo iniciar un script de Python como usuario en el arranque que toma un socket?

Respuesta1

Esto funciona para mí:

su -l usr -c "python script.py arg1 arg2 > logfile.txt &"

Creo que el & anterior está empujando "python script.py" a un segundo plano prematuramente.

Respuesta2

La línea @Reboot funcionó a las mil maravillas en crontab. La respuesta de Freetx no funcionó para mí (probé algo exactamente igual y sin dados :-(

información relacionada