Назад | Перейти на главную страницу

Проверка наличия запущенных в данный момент cronjobs

Я использую веб-сервер на виртуальной машине.

Чтобы создать согласованные резервные копии, я должен на короткое время остановить Apache, MySQL и другие процессы, прежде чем делать снимок жесткого диска виртуальной машины (на основе LVM).

Однако на виртуальной машине могут быть запущены некоторые cronjobs, которым требуется доступ к базе данных MySQL. Я не хочу их перебивать.

Поэтому я ищу способ определить, работают ли в настоящее время какие-либо cronjobs. Когда придет время для резервного копирования, я подожду, пока не «нарушу» какие-либо задачи cron.

Есть идеи, как это сделать?

Что вам действительно нужно сделать, так это использовать систему блокировки, потому что все, что проверяет наличие / отсутствие чего-либо, оставляет окно возможностей для запуска процесса и создает несогласованное состояние, которого вы пытаетесь избежать.

Linux предоставляет стадо команда есть пример использования Вот.

if [ $(ps h --ppid `pidof crond` | wc -l) -eq 0 ]; then 
   /run/your/backup
else 
    echo "There are some still running cron jobs."
fi