sábado, 8 de junio de 2013

Modificar un comando del cron desde la línea de comandos (bash)

Acá un truco para cambiar una línea del cron desde la terminal. De esta forma podemos tener scripts que de forma automática cambien ejecuciones del cron cuando sea necesario y así tener aplicaciones más dinámicas.

La línea es simple:

(crontab -l |grep -v 'MiScript'; echo "1 * * * * /usr/bin/MiScript") | crontab

y funciona así:

Supongamos que actualmente nuestro cron contiene esta línea:
1 * * * * /usr/bin/MiScript

y lo queremos cambiar por:
1 * * * * /usr/bin/MiNuevoScript

Entonces tenemos:

Lo que está dentro del paréntesis, es una salida (output) concatenada:
(crontab -l |grep -v 'MiScript'; echo "1 * * * * /usr/bin/MiNuevoScript")

El comando anterior primero imprime el contenido actual del cron suprimiendo el script que queremos cambiar:
crontab -l |grep -v 'MiScript'

y luego concatena esa salida con la nueva línea que queremos incluir:
echo "1 * * * * /usr/bin/MiNuevoScript"

Luego, esta salida es redirigida al comando crontab:
| crontab

para que sustituya el contenido actual del cron con la salida que obtuvimos en los pasos anteriores.

Listo.

No hay comentarios.: