
Estou trabalhando em um pequeno projeto de automação residencial usando Raspberry Pi (OS -Raspbian).
Quero saber como adicionar mais de um arquivo crontab usando o módulo python-crontab sem substituir as entradas anteriores em crontab -e
?
Quero agendar programaticamente (sem acessar crontab -e
e adicionar manualmente os arquivos) dois scripts python - o primeiro script é executado a cada 5 minutos e outro é executado a cada 2 minutos.
Consegui agendar o primeiro script usando o módulo python-crontab, mas quando agendei o segundo script, ele substituiu o primeiro em crontab -e
. Então, como agendar o novo arquivo crontab sem substituir o anterior?
Se houver outra maneira de agendar o crontab, sugira um código de exemplo :)
Nota: - Quero agendar scripts python no crontab usando scripts python, mas não adicionando manualmente os arquivos em crontab -e
.
Responder1
Se você quiser escrever um script para adicionar entradas no cron (sem usar o editor de texto via crontab -e
), seria algo como:
- execute
crontab -l
para um arquivo temporário - verifique se o seu comando mais recente já está no arquivo. Se sim, pare.
- anexe o comando mais recente ao arquivo temporário
- execute
crontab
com o arquivo temporário como parâmetro, para substituir os comandos agendados
Para referência:
- crontab(1)- manter arquivos crontab para usuários individuais
- crontab(5)- tabelas para dirigir o cron
Responder2
Afinal, como os crontabs são arquivos de texto, por que não apenas acrescentar texto?
with open("/var/spool/cron/crontabs/john", "a") as ctfile:
ctfile.write("1 0 * * 3 /path/to/newcommand --option")
Responder3
crontab -e
é na verdade um arquivo onde você lista todos os seus cronjobs.
Ao digitar, crontab -e
você obterá uma lista de cronjobs e tildas anteriores ( ~
).
Pressione o botão inserir no teclado para alternar entre os modos e pressione enter no final do seu último cronjob.
Isso apagará o tilda e você poderá escrever seu novo cronjob aqui.
Para sair do modo de inserção, pressione escape e enter :wq!
para salvar as alterações.