Cómo agregar mediante programación un nuevo archivo crontab sin reemplazar el anterior

Cómo agregar mediante programación un nuevo archivo crontab sin reemplazar el anterior

Estoy trabajando en un pequeño proyecto de domótica usando raspberry pi (OS -Raspbian).

Quiero saber cómo agregar más de un archivo crontab usando el módulo python-crontab sin reemplazar las entradas anteriores crontab -e.

Quiero programar programáticamente (sin ir manualmente crontab -ey agregar los archivos allí) dos scripts de Python: el primer script se ejecuta cada 5 minutos y el otro se ejecuta cada 2 minutos.

Pude programar con éxito el primer script usando el módulo python-crontab, pero cuando programé el segundo script, reemplazó al primero en formato crontab -e. Entonces, ¿cómo programar el nuevo archivo crontab sin reemplazar el anterior?

Si hay otra forma de programación crontab, sugiérala con un código de ejemplo :)

Nota: - Quiero programar secuencias de comandos de Python en crontab usando secuencias de comandos de Python únicamente, sin agregar manualmente los archivos en crontab -e.

Respuesta1

Si desea escribir un script para agregar entradas en cron (sin usar el editor de texto a través de crontab -e), sería algo como:

  • ejecutar crontab -len un archivo temporal
  • compruebe si su último comando ya está en el archivo. Si es así, detente.
  • agregar el último comando al archivo temporal
  • ejecutar crontabcon el archivo temporal como parámetro, para reemplazar los comandos programados

Para referencia:

  • crontab(1)- mantener archivos crontab para usuarios individuales
  • crontab(5)- tablas para conducir cron

Respuesta2

Dado que, después de todo, los crontabs son archivos de texto, ¿por qué no simplemente agregar texto?

with open("/var/spool/cron/crontabs/john", "a") as ctfile:
    ctfile.write("1 0 * * 3 /path/to/newcommand --option")

Respuesta3

crontab -ees en realidad un archivo donde enumeras todos tus cronjobs.

Cuando escriba, crontab -eobtendrá una lista de cronjobs y tildas ( ~) anteriores.

Presione el botón Insertar en su teclado para cambiar entre modos y presione Enter al final de su último cronjob.

Borrará la tilda y podrás escribir tu nuevo cronjob aquí.

Para salir del modo de inserción, presione Escape e Intro :wq!para guardar los cambios.

información relacionada