
Tengo un par de tareas que me gusta ejecutar periódicamente:
- Empuje todos los repositorios de git (5 veces al día)
- Realizar un análisis de virus en los archivos (cada 90 días)
- Descargar copia de seguridad del servidor (una al día)
Para todas esas tareas, tengo un guión. Para orquestarlos, escribí un guión llamado maintenance
que es parte de miproyecto de mantenimiento. Elversión actual del guión.
Tiene un archivo de configuración JSON para las tareas:
"git-autopush": {
"disk": true,
"internet": true,
"interval": 0.3,
"local": false
},
Me gustaría reemplazar mi script con algún programador de tareas existente, ya que me gustaría reducir el software personalizado en mi sistema. Sin embargo, tengo los siguientes requisitos:
- No lo ejecute cuando esté funcionando con batería.
- Proporcione algún estado visible. Eso podría terminar
kdialog
incluso. - Ejecute sólo una tarea con uso pesado de disco a la vez.
El maintenance
script se encarga de eso y puedo ejecutarlo siempre que tenga tiempo suficiente para ejecutar las tareas. Si no, puedo cancelar todas las tareas y reiniciarlas más tarde.
El cron simple no sería bueno, ya que no funcionaría cuando mi computadora esté apagada. Anacron podría ser mejor, pero supongo que ejecutaría todas las tareas inmediatamente después del arranque. Además, si necesito mi disco para la máquina virtual, ¿cómo le diría al programador que se detenga?
¿Existe algún programa disponible o debería seguir usando el mío?
Respuesta1
Si necesito mi disco para la máquina virtual, ¿cómo le diría al programador que se detenga?
Cron y anacron son (normalmente) servicios de demonio. Puede detenerlos e iniciarlos de la misma manera que detiene e inicia cualquier otro servicio.
cron no sería bueno, ya que no funcionaría cuando mi computadora esté apagada
Ese es un criterio bastante difícil de eludir. ¿Qué desea que haga el software mientras la computadora está apagada?
Anacron podría ser mejor, pero supongo que ejecutaría todas las tareas inmediatamente después del arranque.
Aparentemente. Sin embargo, aquí tienes una idea:empezar y terminar anacron
con cron
.
Ejecute solo una tarea pesada en disco a la vez
Anacron tiene esta opción:
-s
Serializa la ejecución de trabajos. Anacron no inicia un nuevo trabajo antes de que finalice el anterior.
Esto solo te deja implementar estos dos:
- No lo ejecute cuando esté funcionando con batería.
- Proporcione algún estado visible. Eso podría ser incluso a través de kdialog.
Lo primero podría lograrse haciendo que cron verifique el estado de la batería antes de iniciar anacron. El segundo podría realizarse de diversas formas; ya has sugerido uno tú mismo.