检查当前是否有任何 cronjobs 正在运行

检查当前是否有任何 cronjobs 正在运行

我正在虚拟机中运行网络服务器。

为了创建一致的备份,我必须在对 VM 硬盘(基于 LVM)进行快照之前短暂停止 Apache、MySQL 和其他进程。

但是,虚拟机上可能正在运行一些需要访问 MySQL 数据库的 cronjob。我不想中断它们。

因此,我正在寻找一种方法来确定当前是否有任何 cronjob 正在运行。当需要备份时,我会等到不“打扰”任何 cronjob 为止。

有什么想法可以实现这一点吗?

答案1

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

答案2

您真正需要做的是使用锁定系统,因为任何检查某些东西存在/不存在的东西都会为进程启动和创建您试图避免的不一致状态留下机会之窗。

Linux 提供命令有一个使用它的示例这里

相关内容