Executando o Python Script na inicialização como um usuário em particular

1

Eu quero executar um script python na inicialização como um usuário específico.

O script é um servidor (escuta em um soquete, serve solicitações, etc) e deve ser executado em segundo plano, com qualquer saída preferencialmente canalizada para um arquivo de log.

Minha abordagem atual é adicionar uma entrada no final de rc.local assim:

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

O problema: No script, tenho várias instruções de impressão no script. Eles nunca aparecem no arquivo de log. Eu tentei

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 &'

Tenho a sensação de que estou sentindo falta de algo básico. Talvez eu esteja indo de um jeito totalmente errado.

O sistema é o Fedora 15, o script é Python3 e roda bem a partir da linha de comando como usuário. O usuário tem permissões de gravação na pasta para a qual a saída deve ser redirecionada. (Eu descartei isso fazendo a pasta 777).

Eu tentei ter o script python executado como um serviço Systemd, mas eu estava tendo problemas com meu script sendo capaz de pegar um soquete para ouvir. (lançando um erro de sistema operacional sobre o soquete em uso se eu ativasse o serviço systemd na inicialização, ao passo que se eu executasse o script systemctl start script.service depois da inicialização, tudo funcionaria bem).

Como posso iniciar um script python como um usuário na inicialização que captura um soquete?

    
por Caladain 23.08.2012 / 01:25

2 respostas

0

A linha @Reboot funcionou como um charme no crontab. A resposta da Freetx não funcionou para mim (eu tentei algo exatamente igual e sem dados: - (

    
por 04.09.2012 / 18:42
0

Isso funciona para mim:

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

Eu acredito que o anterior & está empurrando "python script.py" para o fundo prematuramente.

    
por 23.08.2012 / 03:57