Є два способи редагування одного crontab:
інтерактивно, використовуючи crontab -e, що відкриє crontabв редакторі вказаний $VISUALабо $EDITOR, або
неінтерактивно, використовуючи crontab crontab.txt, що просто імпортує crontabзаписи з файлу crontab.txt, замінюючи існуючі активні кронтибуди для поточного користувача.
Ваша проблема полягає в тому, що ви просто crontabнеправильно використовуєте команду.
Наступне стосується неінтерактивної маніпуляції з кронатом:
Отже, щоб видалити певні завдання програмно, ви могли б зробити щось на кшталт
$ crontab -l | grep -v 'PATTERN' >crontab.txt && crontab crontab.txt
де PATTERNрегулярний вираз, який відповідатиме завданням, які ви хочете видалити. Ось, crontab -lдамо вам свій струм crontab.
Або якщо у вас є записи у файлі під назвою, crontab-fragment.txtякий ви хочете видалити з активного кронтабуля,
$ crontab -l | grep -v -Fx -f crontab-fragment.txt >crontab.txt && crontab crontab.txt
Це зчитує поточний crontab і фільтрує (видаляє) будь-який рядок, який також зустрічається у файлі crontab-fragment.txtу поточному каталозі (використовуючи порівняння рядків у повному рядку). Результат зберігається crontab.txtі завантажується звідти для заміни поточного кронта.
Щоб додати одне чи кілька завдань , зробіть щось на кшталт
$ crontab -l | cat - crontab-fragment.txt >crontab.txt && crontab crontab.txt
Це передбачається, що файл crontab-fragment.txtмістить записи, які ви хочете додати. Він читає поточний crontab, додає записи crontab-fragment.txtдо цього і створює crontab.txt. Потім crontab.txtфайл замінює поточний crontab.