且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

确保Bash脚本只有一个实例正在运行的***方法是什么?

更新时间:2023-12-05 13:51:52

如果所有用户的脚本都相同,则可以使用lockfile方法.如果您获得了锁,请继续执行其他操作,并显示一条消息并退出.

If the script is the same across all users, you can use a lockfile approach. If you acquire the lock, proceed else show a message and exit.

例如:

[Terminal #1] $ lockfile -r 0 /tmp/the.lock
[Terminal #1] $ 

[Terminal #2] $ lockfile -r 0 /tmp/the.lock
[Terminal #2] lockfile: Sorry, giving up on "/tmp/the.lock"

[Terminal #1] $ rm -f /tmp/the.lock
[Terminal #1] $ 

[Terminal #2] $ lockfile -r 0 /tmp/the.lock
[Terminal #2] $ 

获取/tmp/the.lock后,您的脚本将是唯一有权执行的脚本.完成后,只需取下锁.在脚本形式下,它可能类似于:

After /tmp/the.lock has been acquired your script will be the only one with access to execution. When you are done, just remove the lock. In script form this might look like:

#!/bin/bash

lockfile -r 0 /tmp/the.lock || exit 1

# Do stuff here

rm -f /tmp/the.lock