(у меня недостаточно репутации, чтобы комментировать, поэтому я добавляю в качестве ответа: не стесняйтесь добавлять его в качестве комментария рядом с его ответом)
Однострочная строка Джо Касадонте идеальна, за исключением случаев, когда вы запускаете с set -e
, т.е. если ваш скрипт настроен на ошибку при ошибке, и если еще нет cronjobs.В этом случае однострочник НЕ создаст cronjob, но НЕ остановит скрипт.Тихая ошибка может быть очень обманчивой.
Причина в том, что crontab -l
возвращается с кодом возврата 1
, в результате чего последующая команда (echo
) не будет выполнена ... таким образом, cronjobне создан.Но так как они выполняются как подпроцесс (из-за круглых скобок), они не останавливают сценарий.
(Интересно, что если вы снова запустите ту же команду, она будет работать: после выполнения crontab -
один раз crontab -l
все еще ничего не выводит, но больше не возвращает ошибку (вы больше не получаете сообщение no crontab for <user>
). Таким образом, выполняется следующий echo
и создается crontab)
В любом случае, если вы запускаете с set -e
, строка должна быть:
(crontab -l 2>/dev/null || true; echo "*/5 * * * * /path/to/job -with args") | crontab -