用fuser避免一个脚本被同时执行

本文介绍了一种在脚本中实现排他性检查的方法,确保脚本不会被重复执行,以防导致数据统计错误。使用fuser命令进行检查,若发现已有实例运行,则提示并退出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在运营中,偶尔要写些脚本做例行的工作,其中有些脚本是只能同时只被执行一次,不然可能会出错。比如宽带或者CIP在平衡统计的时候,会停掉备DB,并将流水和info表按一定的规则导进一个临时的表或者文件中,如果脚本被错误的同时执行了两次,统计出来的数据可能会不准确。

 

如果在脚本上加上个排他性的检查,发现该脚本正在执行的时候,第二次的执行就自动退出并给出提示可以避免一些认为的疏忽。

 

下面是一个例子通过fuser来检查当前脚本是否正在执行,如果正在执行则提示并退出脚本。

 

 

 

#!/bin/bash

 

#

 

#--------------------------------------------------------------------#

 

if fuser $0 2> /dev/null | sed "s///<$$//>//" | grep -q '[0-9]'; then

 

    echo 'Script is already running...' 1>&2

 

    exit 1

 

fi

 

#program starts here

 

sleep 60

 

echo "=end="

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值