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