检查备份是否成功并启动另一个备份的条件



我试图为crontab脚本设置一个条件,如果最后一个备份尚未完成或脚本仍在运行,则不启动另一个备份,以防备份运行速度较慢或类似的情况。为此,我创建了类似的东西,但linux首先创建进程,然后执行脚本命令,因此它将始终存在"process is running":

ps auxw | grep backup.sh | grep -v grep > /dev/null
if [ $? = 0 ]; then
  echo "process is running"    
  exit 1
else
  ./backup.sh
fi

如果代码片段来自backup.sh文件,那么您可以将上述验证放入单独的文件中。那么grep将不会匹配"自身"。

另一种方法是使用其他正在使用的文件。创建正在使用的文件,如果文件存在,则退出1。只要确保在脚本完成后删除正在使用的文件。

#!/usr/bin/env bash
set -o errexit
trap cleanup ERR INT QUIT
cleanup()
{
    rm -f "$INUSE"
}
INUSE=/home/abc/inuse/backup.inuse
if [ if -f "$INUSE" ]; then
    echo "process is running"
    exit 1
else
    touch "$INUSE"
fi
# backup starts in here
# end of backup
cleanup

相关内容

最新更新