美文网首页
Shell脚本单实例实现方式

Shell脚本单实例实现方式

作者: Ricky_Zeng | 来源:发表于2021-05-31 22:23 被阅读0次

Shell单进程实例的实现方式

需求背景:电视每次进行STR开机后会启动一个Shell脚本,如果多次快速STR开关机,同个脚本有多个进程实例同时运行的可能;虽然最终实验STR场景下,执行到一半的脚本只会被挂起,开机后再继续执行,但既然想到这个情况,就把问题抽象出来吧。

抽象需求:如何实现Shell脚本单进程实例

1. 通过检查进程名是否运行

#!/system/bin/sh

script_file_name=`basename $0`
if [ `pgrep -c -f $script_file_name ` -gt 1 ]; then
    echo "$script_file_name is running, exit."
    exit 0
fi

# You task...

2. 通过普通文件的创建来检查进程是否运行中

#!/system/bin/sh

PROCESS_FLAG_FILE="/tmp/ricky.lock"

function delProcessFlagFile {
    rm -f $PROCESS_FLAG_FILE
}

if [ -f $PROCESS_FLAG_FILE ]; then
    echo "script is running, exit."
    exit 0
fi

touch $PROCESS_FLAG_FILE
sync

trap delProcessFlagFile EXIT

# You task...

3. 通过文件锁flock进行加锁

exec 6<> filelock
flock -n 6 || {
    echo "Script is running..."
    exit 1
}

# You task...

相关文章

网友评论

      本文标题:Shell脚本单实例实现方式

      本文链接:https://www.haomeiwen.com/subject/vcdisltx.html