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

我正在VM中运行一个Web服务器。

为了创build一致的备份,我必须在执行虚拟机硬盘快照(基于LVM的)之前,暂时停止Apache,MySQL和其他进程。

但是,在虚拟机上可能有一些需要访问MySQL数据库的cronjob。 我不想打断他们。

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

任何想法如何做到这一点?

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

你真正需要做的就是使用一个locking系统,因为任何检查是否存在某个东西都会为进程启动一个机会窗口,并创build你想要避免的不一致状态。

Linux提供了flock命令,这里有一个使用它的例子。