How to make sure only one instance of a Bash script is running at a time?

前端 未结 6 1867
时光取名叫无心
时光取名叫无心 2021-02-08 00:54

I want to make a sh script that will only run at most once at any point.

Say, if I exec the script then I go to exec the script again, how do I make it so that if the f

6条回答
  •  别那么骄傲
    2021-02-08 01:28

    (
            if flock -n 9
            then
                    echo 'Not doing the critical operation (lock present).'
                    exit;
            fi
    
            # critical section goes here
    
    ) 9>'/run/lock/some_lock_file'
    rm -f '/run/lock/some_lock_file'
    

    From example in flock(1) man page. Very practical for using in shell scripts.

提交回复
热议问题