Como adicionar programaticamente um novo arquivo crontab sem substituir o anterior

Como adicionar programaticamente um novo arquivo crontab sem substituir o anterior

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 -ee 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 -lpara 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 crontabcom 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 -evocê 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.

informação relacionada