Cron Tab como usuário específico e ambiente virtual python

Cron Tab como usuário específico e ambiente virtual python

Desejando executar um cron job de hora em hora como um usuário específico (xfeautomation) e um ambiente virtual python. Executando como um usuário específico, terei que adicionar o local do script ao PATH? Meu cron job atual é assim:

0 * * * *  xfeautomation /opt/scripts/wf_venv/bin/python /opt/scripts/wf_api_linux.py 2>&l /opt/scripts/log.txt

Esta é a maneira correta ou ideal? TIA

Responder1

mude para esse usuário.

sudo su - xfeautomation

Correr

crontab -e

Um editor de arquivos com arquivo vazio aparecerá. Adicione seu trabalho sem nome de usuário e salve-o.

0 * * * * /opt/scripts/wf_venv/bin/python /opt/scripts/wf_api_linux.py 2>&l /opt/scripts/log.txt

Verificação:

sudo su - xfeautomation crontab -l

OU

sudo crontab -u xfeautomation

Responder2

Executando como um usuário específico, terei que adicionar o local do script ao PATH?

Normalmente você não precisa modificar a variável de ambiente PATH quando estiver usando caminhos absolutos, como está fazendo agora com/opt/scripts/wf_venv/bin/python /opt/scripts/wf_api_linux.py 2>&l /opt/scripts/log.txt

Como administrador de sistema, você tem diversas opções para criar trabalhos em lote agendados que são executados com um ID de usuário diferente:

  1. Como explicado emesta resposta:configure um crontab pessoal para esse usuário. Os trabalhos em um crontab pessoal sempre serão executados sob o ID de usuário de seu proprietário.
    Observe que quando você, como administrador, configura um crontab pessoal para outro usuário, esse usuário poderá modificar e excluir a especificação do cron job, desfazendo seu trabalho.

  2. Alternativamente você podeagendar um trabalho do sistema a partir do crontab do sistema. O crontab do sistema (normalmente /etc/crontabe/ou arquivos drop-in em /etc/cron.d/) é de propriedade do root e não pode ser modificado por usuários sem privilégios. A especificação do trabalho no crontab do sistema suporta um campo extra não presente em arquivos crontab pessoais: o campo #6 precisa de um nome de usuário, como xfeautomationo ID do usuário que será usado para executar o trabalho.
    A sintaxe que você postou está correta para uma entrada /etc/crontabou um arquivo drop-in como/etc/cron.d/wf_api_linux

    0 * * * *  xfeautomation /opt/scripts/wf_venv/bin/python /opt/scripts/wf_api_linux.py 2>&l /opt/scripts/log.txt
    

Como você está registrando todas as saídas e erros, não é uma preocupação, mas normalmente o cron enviará por e-mail a saída padrão e os erros para o root quando você configurar um crontab do sistema e diretamente para o usuário ao usar um crontab pessoal.

Pelo que eu sei, ambos os métodos resultam nas mesmas condições para o trabalho e, além das preocupações sobre a propriedade das especificações do trabalho e dos e-mails, eles são equivalentes.

informação relacionada