(No tengo suficiente reputación para comentar, así que estoy agregando como respuesta: siéntase libre de agregarlo como comentario junto a su respuesta)
El one-liner de Joe Casadonte es perfecto, excepto si corres conset -e
, es decir, si su script está configurado para fallar en caso de error, y si todavía no hay cronjobs. En ese caso, el one-liner NO creará el cronjob, pero NO detendrá el script. El fracaso silencioso puede ser muy engañoso.
La razón es que crontab -l
regresa con un 1
código de retorno, causando el siguiente comando (elecho
) no se ejecute ... por lo tanto, el cronjob no se crea. Pero como se ejecutan como un subproceso (debido al paréntesis), no detienen el script.
(Curiosamente, si ejecuta el mismo comando nuevamente, funcionará: una vez que haya ejecutado crontab -
una vez, crontab -l
aún no muestra nada, pero ya no devuelve un error (ya no recibe el no crontab for <user>
mensaje). Entonces echo
se ejecuta el siguiente y se crea el crontab)
En cualquier caso, si corre con set -e
, la línea debe ser:
(crontab -l 2>/dev/null || true; echo "*/5 * * * * /path/to/job -with args") | crontab -