Is there any mutex/semaphore mechanism in shell scripts?

前端 未结 3 932
名媛妹妹
名媛妹妹 2020-12-05 13:25

I\'m looking for mutex/semaphore/concurrency mechanism in shell script. Consider following situation: Unless \"a\" user does not close the shared file, \"b\" user should no

3条回答
  •  小蘑菇
    小蘑菇 (楼主)
    2020-12-05 13:47

    The BashFAQ noted by shellter has some good examples. The basic idea, which I'm moving here so the page is self-contained, is to use an operation that both tests and sets at the same time: mkdir

    mkdir will fail if the directory exists and will make it if it does not. It's an atomic operation and you can use it like so to do a mutex in your shell script (from the above BashFAQ)

    # Bourne
    lockdir=/tmp/myscript.lock
    if mkdir "$lockdir"
    then    # directory did not exist, but was created successfully
        echo >&2 "successfully acquired lock: $lockdir"
        # continue script
    else    # failed to create the directory, presumably because it already exists
      echo >&2 "cannot acquire lock, giving up on $lockdir"
      exit 0
    fi
    

    follow the link for more detail on cleanup and other items.

提交回复
热议问题