sueño sensacion repentino muscular mental fisico fatiga dolor despertar decaimiento cuerpo causas cansancio cron

cron - sensacion - fatiga y sueño



Cron trabajo cada tres días (10)

¿Es posible ejecutar un cronjob cada tres días? O tal vez 10 veces / mes.


Si desea que se ejecute en días específicos del mes, como el 1. °, 4. °, 7. °, etc. ... entonces puede tener un condicional en su secuencia de comandos que verifique el día actual del mes.

Pensé que todo lo que necesitabas para esto era en lugar de * / 3, lo que significa que cada tres días, usa 1/3, lo que significa que cada tres días comienza el 1 ° del mes. así que 7/3 significaría cada tres días a partir del 7 del mes, etc.


Como cron es "sin estado", no puede expresar con precisión "frecuencias", solo "patrones" con los que (aparentemente) coincide continuamente con la hora actual.

Al reformular su pregunta, esto es más obvio: "¿es posible ejecutar un cronjob a las 00:01 am todas las noches, excepto las noches de omisión cuando se ejecutó en 2 noches?" Cuando cron compara el tiempo actual con los patrones de tiempo de solicitud de trabajo, cron no puede saber si ejecutó su trabajo en el pasado.

(Ciertamente es posible escribir un cron con estado que registre trabajos anteriores y, por lo tanto, incluye patrones para la comparación con este estado, pero ese no es el cron estándar incluido en la mayoría de los sistemas operativos. Tal sistema se complicaría al requerir la introducción del concepto de cuando tales patrones "reinician". Por ejemplo, ¿se restablece el patrón cuando se cambia el tiempo (es decir, se revisa la entrada crontab)? Busque en su aplicación de calendario favorita para ver qué tan complicado puede llegar a expresar patrones repetitivos de eventos programados, y tenga en cuenta que no tienen el problema de reinicio porque el evento de calendario inicial tiene una fecha natural de "inicio" a / k / a "restablecer". Intente reprogramar un evento de calendario recurrente cada dos semanas para posponer por una semana, durante Navidad Por ejemplo, generalmente tiene que finalizar ese evento recurrente y reiniciar uno completamente nuevo, esto ilustra la limitada expresividad de cómo hasta las aplicaciones de calendario complicadas representan patrones que se repiten. Y, por supuesto, los calendarios tienen una gran cantidad de state-- cada evento individual se puede eliminar o reprogramar de forma independiente [en la mayoría de las aplicaciones de calendario]).

Además, es probable que desee hacer su trabajo cada 3ra noche si tiene éxito , pero si el último falló, volver a intentarlo inmediatamente, tal vez la noche siguiente (no esperar 3 días más) o incluso antes, como una hora más tarde (pero deje de intentarlo a la llegada de la mañana). Claramente, cron no podría saber si su trabajo tuvo éxito y el patrón tampoco puede expresar un horario alterno de "reintentos" más frecuente.

DE TODOS MODOS-- Puedes hacer lo que quieras tú mismo. Escribe un guión, dile a cron que lo ejecute todas las noches a las 00:01 a.m. Esta secuencia de comandos podría verificar la marca de tiempo de algo * que registra la "última ejecución", y si fue> hace 3 días **, realice el trabajo y restablezca la marca de tiempo "última ejecución".

(* ese indicador de marca de tiempo es un poco de estado persistente que puede manipular y examinar, pero que cron no puede)

** tenga cuidado con la aritmética de tiempo si usa tiempo de reloj legible por los humanos-- dos veces al año, algunos días tienen 23 o 25 horas en su día, y 02: 00-02: 59 ocurre dos veces en un día o no en todas. Use UTC para evitar esto.


Debes aprender los conceptos básicos de crontab .

Edite el cron por el comando crontab -e y luego ^ (CTRL) + X luego Y y finalmente presione ENTER (regresar) en mac para guardar el archivo. Puede verificar que los nuevos crones no hayan sido instalados por crontab -l

Un archivo crontab tiene cinco campos para especificar minutos, horas, el día del mes, el mes y el día de la semana seguidos por el comando que se ejecutará en ese intervalo.

* * * * * command to be executed - - - - - | | | | | | | | | +----- day of week (0-6) (Sunday=0) | | | +------- month (1-12) | | +--------- day of month (1-31) | +----------- hour (0-23) +------------- min (0-59)

* en el campo de valor anterior significa todos los valores legales como llaves para esa columna.

Aquí, escribí una publicación detallada al respecto: Setup Cron en Unix


Ejecútalo cada tres días ...

0 0 */3 * *

¿Qué hay sobre eso?

Si desea que se ejecute en días específicos del mes, como el 1. °, 4. °, 7. °, etc. ... entonces puede tener un condicional en su secuencia de comandos que verifique el día actual del mes.

if (((date(''j'') - 1) % 3)) exit();

o, como señala @mario, puede usar la fecha (''k'') para obtener el día del año en lugar de hacerlo en función del día del mes.



Qué tal si:

00 00 * * * every 3 days && echo test

Donde every una es una secuencia de comandos:

#!/bin/sh case $2 in days) expr `date +%j` % $1 = 0 > /dev/null ;; weeks) expr `date +%V` % $1 = 0 > /dev/null ;; months) expr `date +%m` % $1 = 0 > /dev/null ;; esac

Por lo tanto, se ejecuta todos los días.

El uso de */3 ejecuta el día 3, el 6, el ... el 27, el 30 del mes, pero luego está mal después de que un mes tiene un día 31. every secuencia de comandos solo está mal después de fin de año.


Sería más sencillo si lo configuró para que se ejecute, por ejemplo, los lunes y jueves, lo que le daría un descanso de 3 y 4 días.

De lo contrario, configúrelo para que se ejecute diariamente, pero haga que su script cron de php salga temprano con:

if (! (date("z") % 3)) { exit; }


0 0 * * * [ $(($(( date +% - j - 1)) % 3)) == 0 ] && script

Obtenga el día del año a partir de la date , compense por 1 para comenzar en 0, verifique si se trata del módulo tres.


* * */3 * * that says, every minute of every hour on every three days. 0 0 */3 * * says at 00:00 (midnight) every three days.


0 0 1-30/3 * *

Esto se ejecutaría cada tres días a partir del 1er. Estas son las 20 carreras programadas:

  • 2015-06-01 00:00:00
  • 2015-06-04 00:00:00
  • 2015-06-07 00:00:00
  • 2015-06-10 00:00:00
  • 2015-06-13 00:00:00
  • 2015-06-16 00:00:00
  • 2015-06-19 00:00:00
  • 2015-06-22 00:00:00
  • 2015-06-25 00:00:00
  • 2015-06-28 00:00:00
  • 2015-07-01 00:00:00
  • 2015-07-04 00:00:00
  • 2015-07-07 00:00:00
  • 2015-07-10 00:00:00
  • 2015-07-13 00:00:00
  • 2015-07-16 00:00:00
  • 2015-07-19 00:00:00
  • 2015-07-22 00:00:00
  • 2015-07-25 00:00:00
  • 2015-07-28 00:00:00