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

时间:2016-08-25 12:15:11

标签: bash

我尝试将条件设置为crontab脚本以进行备份,以便在最后一个备份尚未完成或脚本仍在运行时启动另一个备份,以防备份运行慢或类似的东西。为此,我创建了类似的东西,但linux首先创建了进程,而不是执行脚本命令,因此它总是存在"进程正在运行":

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

1 个答案:

答案 0 :(得分:1)

如果代码段来自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
相关问题