Есть два способа редактирования crontab:
в интерактивном режиме, используя crontab -e, что откроет crontabв редакторе, указанном $VISUALили $EDITOR, или
неинтерактивно, используя crontab crontab.txt, который просто импортирует crontabзаписи из файла crontab.txt, заменяя существующий активный crontab для текущего пользователя.
Проблема в том, что вы просто crontabнеправильно используете команду.
Следующее касается неинтерактивных манипуляций crontab:
Таким образом, чтобы удалить определенные задачи программно, вы можете сделать что-то вроде
$ crontab -l | grep -v 'PATTERN' >crontab.txt && crontab crontab.txt
где PATTERN- это регулярное выражение, которое будет соответствовать задаче, которую вы хотите удалить. Здесь, crontab -lдаст вам ваш текущий crontab.
Или, если у вас есть записи в файле, crontab-fragment.txtкоторый вы хотите удалить из активного crontab,
$ crontab -l | grep -v -Fx -f crontab-fragment.txt >crontab.txt && crontab crontab.txt
Это читает текущий crontab и отфильтровывает (удаляет) любую строку, которая также встречается в файле crontab-fragment.txtв текущем каталоге (с использованием сравнения строк полной строки). Результат сохраняется crontab.txtи затем загружается оттуда для замены текущего crontab.
Чтобы добавить одно или несколько заданий , сделайте что-то вроде
$ crontab -l | cat - crontab-fragment.txt >crontab.txt && crontab crontab.txt
Это предполагает, что файл crontab-fragment.txtсодержит записи, которые вы хотели бы добавить. Он читает текущий crontab, добавляет к нему записи crontab-fragment.txtи создает crontab.txt. Затем crontab.txtфайл заменяет текущий crontab.