Я использую веб-сервер на виртуальной машине.
Чтобы создать согласованные резервные копии, я должен на короткое время остановить 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