
У меня есть пара задач, которые я люблю выполнять периодически:
- Пуш всех репозиториев git (5 раз в день)
- Проверяйте файлы на вирусы (каждые 90 дней)
- Загрузить резервную копию с сервера (одну в день)
Для всех этих задач у меня есть сценарий. Чтобы организовать их, я написал сценарий, который называется , maintenance
который является частью моегопроект технического обслуживания.текущая версия скрипта.
Он содержит файл конфигурации JSON для задач:
"git-autopush": {
"disk": true,
"internet": true,
"interval": 0.3,
"local": false
},
Я хотел бы заменить свой скрипт на какой-нибудь существующий планировщик задач, поскольку я хотел бы сократить количество пользовательского ПО в моей системе. Однако у меня есть следующие требования:
- Не запускайте устройство, работающее от аккумулятора.
- Обеспечить видимый статус. Это может быть
kdialog
даже через. - Запускайте только одну ресурсоемкую задачу одновременно.
Скрипт maintenance
заботится об этом, и я могу запустить его, когда у меня будет достаточно времени, чтобы запустить задачи. Если нет, я могу просто отменить все задачи и перезапустить их позже.
Обычный cron не подойдет, так как он не будет работать, когда мой компьютер выключен. anacron может быть лучше, но я предполагаю, что он будет запускать все задачи сразу после загрузки. Кроме того, если мне понадобится мой диск для виртуальной машины, как мне сказать планировщику остановиться?
Есть ли какая-то существующая программа или мне просто продолжать пользоваться своей?
решение1
если мне понадобится мой диск для виртуальной машины, как мне сказать планировщику остановиться?
Cron и anacron (обычно) являются службами-демонами. Вы можете останавливать и запускать их так же, как останавливаете и запускаете любую другую службу.
cron не подойдет, так как он не будет работать, когда мой компьютер выключен
Это довольно сложный критерий. Что вы хотите, чтобы программное обеспечение делало, пока компьютер выключен?
anacron может быть лучше, но я предполагаю, что он запустит все задачи сразу после загрузки.
Видимо. Но вот идея:начинать и заканчивать anacron
с cron
.
Запускайте только одну тяжелую дисковую задачу за раз
У Anacron есть такая опция:
-s
Сериализует выполнение заданий. Anacron не начинает новое задание до завершения предыдущего.
Остается только реализовать эти два:
- Не запускайте устройство, работающее от аккумулятора.
- Предоставьте какой-то видимый статус. Это может быть даже через kdialog.
Первое можно сделать, заставив cron проверять состояние батареи перед запуском anacron. Второе можно сделать множеством способов; вы уже сами предложили один.