Есть два способа редактирования 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.