(У меня недостаточно репутации, чтобы комментировать, поэтому я добавляю в качестве ответа: не стесняйтесь добавлять его в качестве комментария рядом с его ответом)
Однострочник Джо Касадонте идеален, за исключением случаев, когда вы бежите с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 -