Как программно добавить новый файл crontab, не заменяя предыдущий

Как программно добавить новый файл crontab, не заменяя предыдущий

Я работаю над небольшим проектом по автоматизации дома с использованием Raspberry Pi (ОС -Raspbian).

Я хочу узнать, как добавить более одного файла crontab с помощью модуля python-crontab, не заменяя предыдущие записи в crontab -e?

Я хочу программно (без ручного перехода crontab -eи добавления файлов) запланировать два скрипта Python: первый скрипт будет выполняться каждые 5 минут, а другой — каждые 2 минуты.

Мне удалось успешно запланировать первый скрипт с помощью модуля python-crontab, но когда я запланировал второй скрипт, он заменил первый в crontab -e. Так как же запланировать новый файл crontab, не заменяя предыдущий?

Если есть другой способ планирования crontab, пожалуйста, предложите пример кода :)

Примечание: Я хочу запланировать выполнение скриптов Python в crontab, используя только скрипты Python, а не вручную добавляя файлы в crontab -e.

решение1

Если вы хотите написать скрипт для добавления записей в cron (без использования текстового редактора через crontab -e), это будет что-то вроде:

  • запустить crontab -lво временный файл
  • Проверьте, есть ли уже ваша последняя команда в файле. Если да, остановитесь.
  • добавить последнюю команду во временный файл
  • запустить crontabс временным файлом в качестве параметра, чтобы заменить запланированные команды

Для справки:

  • кронтаб(1)- ведение файлов crontab для отдельных пользователей
  • кронтаб(5)- таблицы для управления cron

решение2

Поскольку файлы crontab все-таки являются текстовыми файлами, почему бы просто не добавить текст?

with open("/var/spool/cron/crontabs/john", "a") as ctfile:
    ctfile.write("1 0 * * 3 /path/to/newcommand --option")

решение3

crontab -eна самом деле это файл, в котором перечислены все ваши cronjobs.

При вводе crontab -eвы получите список предыдущих заданий cronjob и тильд ( ~).

Нажмите кнопку «Insert» на клавиатуре, чтобы переключиться между режимами, и нажмите «Enter» в конце последнего задания cron.

Это сотрет тильду, и вы сможете написать здесь новое задание cron.

Чтобы выйти из режима вставки, нажмите Escape и Enter, :wq!чтобы сохранить изменения.

Связанный контент