if [ $(ps h --ppid 'pidof crond' | wc -l) -eq 0 ]; then
/run/your/backup
else
echo "There are some still running cron jobs."
fi
Estou executando um servidor da Web em uma VM.
Para criar backups consistentes, tenho que interromper o Apache, o MySQL e outros processos por um curto período antes de fazer um snapshot do disco rígido da VM (baseado em LVM).
No entanto, pode haver alguns cronjobs atualmente em execução na VM que precisam de acesso ao banco de dados MySQL. Eu não quero interrompê-los.
Portanto, estou procurando uma maneira de determinar se há algum cron cronograma em execução no momento. Quando chegar a hora de fazer um backup, esperarei até que eu não "perturbe" nenhum cronjob.
Alguma idéia de como fazer isso?
O que você realmente precisa fazer é usar um sistema de bloqueio porque qualquer coisa que verifique a existência / não existência de algo deixa uma janela de oportunidade para um processo ser iniciado e criar o estado inconsistente que você está tentando evitar.
O Linux fornece o comando flock , há um exemplo de uso aqui .