He investigado bastante sobre cómo hacer esto, y veo que no hay forma directa en cron de ejecutar un trabajo, digamos, cada dos jueves.
En este momento, me estoy inclinando hacia la creación de un script que se ejecutará todas las semanas, y tocará un archivo de "marca" cuando se ejecute, y si se ejecuta y el archivo ya está allí, para eliminar el archivo (y no realizar el acción quincenal).
Mi pregunta es, ¿hay alguna otra forma más elegante o más simple de lograr este objetivo de un script bash de acciones que se ejecutan cada dos semanas automáticamente?
¡Gracias!
Respuestas:
Solía bash para hacer mis cálculos porque soy vago; cambia eso a lo que quieras. Aprovecho que el 1 de enero de 1970 es jueves; para otros días de la semana, tendría que aplicar una compensación. Cron necesita que se escapen los signos de porcentaje.
Comprobación rápida:
Tenga en cuenta que he elegido momentos aleatorios para mostrar que esto funcionará si se ejecuta en cualquier momento el jueves, y elegí fechas que cruzan los límites del año más incluyen meses con 4 y 5 jueves.
Salida:
fuente
Una forma podría ser usar la
at
utilidad si está ejecutando Linux. Podrías poner esto al final de tu script:donde X es el momento en el que quieres ejecutar tu script. Para inicializar solo llame
at
por el tiempo que desea ejecutarlo la primera vez y luego la declaración anterior sigue renovando su llamada programada.fuente
Si puede usar
anacron
en el sistema, las cosas serán mucho más simples. Para usarloanacron
debe tenerlo instalado y también debe tener acceso de root. No funciona en sistemas más antiguos (es decir, RHEL 5.x), las versiones anteriores de ancron SOLO se ejecutan en el arranque. Funciona con sistemas más nuevos (es decir, RHEL 6.x).Con
anacron
, uno puede programar trabajos de una manera más flexible, por ejemplo, ejecutar el trabajo X una vez por semana. Tambiénanacron
ejecuta trabajos cuando la computadora está disponible, es decir, no tiene que considerar cuándo el sistema está activo o inactivo.Para ejecutar un script cada dos semanas, debe agregar una línea similar a la siguiente en / etc / anacrontab:
Echa un vistazo a la página del manual para más detalles.
fuente
anacron
es claramente la solución más limpia de la OMI (a menos que tenga algunas consecuencias no deseadas para algunas personas).No estoy seguro de si hay una manera más elegante de definir cada dos semanas, pero esto puede funcionar para usted.
Esto lanzará el script a las 6:00 am el primer y tercer jueves del mes.
fuente
1-7,15-21,29-31
, pero entonces sería dirigido back-to-back si no hubiera ninguna coincidencia para la última serie ...Lo ejecutaría todas las semanas y hacer que el script verifique si el número de la semana es un número impar: si es así, salga.
Esto necesitaría un poco más de reflexión para funcionar de diciembre a enero.
Quizás haga que el script establezca un archivo indicador de "última ejecución exitosa". Cuando se inicie la secuencia de comandos, compruebe que el archivo de marca se modificó por última vez hace 14 días.
fuente