(Não tenho reputação suficiente para comentar, por isso estou adicionando como resposta: fique à vontade para adicioná-lo como comentário ao lado da resposta dele)
A linha única de Joe Casadonte é perfeita, exceto se você executar com set -e
, ou seja, se o seu script estiver configurado para falhar por erro e se ainda não houver cronjobs. Nesse caso, o one-liner NÃO criará o cronjob, mas NÃO interromperá o script. A falha silenciosa pode ser muito enganadora.
O motivo é que crontab -l
retorna com um 1
código de retorno, fazendo com que o comando subseqüente (the echo
) não seja executado ... portanto, o cronjob não é criado. Mas, como são executados como um subprocesso (por causa dos parênteses), eles não param o script.
(Curiosamente, se você executar o mesmo comando novamente, ele vai trabalhar: depois de ter executado crontab -
uma vez, crontab -l
ainda saídas nada, mas ele não retorna mais um erro (você não obter a no crontab for <user>
mensagem mais) para que o posterior. echo
É executado e o crontab é criado)
De qualquer forma, se você executar com set -e
, a linha deverá ser:
(crontab -l 2>/dev/null || true; echo "*/5 * * * * /path/to/job -with args") | crontab -