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:
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.Alternativamente você podeagendar um trabalho do sistema a partir do crontab do sistema. O crontab do sistema (normalmente
/etc/crontab
e/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, comoxfeautomation
o ID do usuário que será usado para executar o trabalho.
A sintaxe que você postou está correta para uma entrada/etc/crontab
ou 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.