
Я работаю над небольшим проектом по автоматизации дома с использованием 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!
чтобы сохранить изменения.