GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo indicar a cron que ejecute un trabajo cada dos semanas?

Respuesta

Modifique su lógica cron de martes para ejecutar cada dos semanas desde la época .

Sabiendo que hay 604800 segundos en una semana (ignorando los cambios de horario de verano y los segundos bisiestos, gracias) y usando la fecha GNU:

0 6 * * Tue expr `date +\%s` / 604800 \% 2 >/dev/null || /scripts/fortnightly.sh

Aparte

La aritmética del calendario es frustrante.

La respuesta de @xahtep es excelente pero, como señaló @Doppelganger en los comentarios, fallará en ciertos límites de año. Ninguno de los date Los especificadores de "semana del año" de la utilidad pueden ayudar aquí. Algún martes a principios de enero inevitablemente repetirá la paridad semanal del último martes del año anterior:2016-01-05 (%V), 2018-01-02 (%U) y 2019-01-01 (%W) .


la respuesta de pilcrow es genial. Sin embargo, da como resultado que el script quincenal.sh se ejecute cada even semana (desde la época). Si necesita que el script se ejecute en impar semanas, puedes modificar un poco su respuesta:

0 6 * * Tue expr \( `date +\%s` / 604800 + 1 \) \% 2 > /dev/null || /scripts/fortnightly.sh

Cambiar el 1 a 0 lo moverá de nuevo a las semanas pares.


¿Qué tal esto? Lo mantiene en el crontab incluso si no está exactamente definido en los primeros cinco campos:

0 6 * * Tue expr `date +\%W` \% 2 > /dev/null || /scripts/fortnightly.sh

Linux
  1. ¿Cómo ejecutar `fecha` dentro de un trabajo de pestaña cron?

  2. Cómo ejecutar un trabajo cron en días específicos de la semana

  3. ¿Cómo configurar un trabajo cron para ejecutar un ejecutable cada hora?

  4. Cómo ejecutar el trabajo crontab cada semana el domingo

  5. ¿Cómo ejecutar cron job cada 3 meses?

Cómo ejecutar trabajos cron cada 5, 10 o 15 minutos

Cómo programar un trabajo en Cron para que se ejecute cada hora en Ubuntu 20.04

Cómo configurar un trabajo cron en Debian 10

Cómo configurar un trabajo cron en cPanel

Cómo ejecutar un trabajo Crontab cada semana el domingo

¿Cómo puedo hacer que un trabajo cron se ejecute cada 30 minutos?