minutos manualmente job instalar ejemplos ejecutar editar cada cron sh

job - ejecutar crontab manualmente



¿Ejecuta dos comandos secuencialmente en un trabajo cron? (2)

Tengo dos comandos en un trabajo cron como este:

mysql -xxxxxx -pyyyyyyyyyyv -hlocalhost -e "call MyFunction1";wget -N http://mywebsite.net/path/AfterMyFunction1.php

pero me parece que ambos funcionan al mismo tiempo.

¿Cómo puedo hacer que se ejecute el primer comando y cuando se completa, ejecuta el segundo comando?

Además, AfterMyFunction1.php tiene solicitudes http de JavaScript que no se ejecutan cuando uso wget. Funciona si abrí AfterMyFunction1.php en mi navegador web.


Puede usar sem que es parte de GNU parallel .

0 0 * * * root sem --jobs 1 --id MyQueue mysql -xxxxxx -pyyyyyyyyyyv -hlocalhost -e "call MyFunction1" 1 0 * * * root sem --jobs 1 --id MyQueue wget -N http://mywebsite.net/path/AfterMyFunction1.php

Esta configuración de cron primero iniciará el mysql través de sem , que lo pondrá en una especie de cola llamada MyQueue . Esta cola probablemente estará vacía, por lo que mysql se ejecuta inmediatamente. Un minuto después, el cron iniciará otro sem que colocará el wget en la misma cola. Con --jobs 1 , se indica a sem que ejecute solo un trabajo a la vez en esa cola en particular. Tan pronto como el mysql haya terminado, el segundo sem ejecutará el comando wget . sem tiene muchas opciones para controlar el comportamiento de la cola. Por ejemplo, si agrega --semaphoretimeout -60 , un trabajo en espera simplemente morirá después de 60 segundos.

La solución && es probablemente mejor, ya que no ejecutará el segundo comando cuando el primero falle. La solución sem tiene la ventaja de que puede especificar diferentes configuraciones cron, como un usuario diferente. Y evitará la superposición de trabajos cron, si el intervalo cron es más corto que la duración del trabajo.


Si primero se requiere completar el primer comando, debe separarlos con el operador && como lo haría en el shell. Si el primero falla, el segundo no se ejecutará.