确保在给定时间只有一个 shell 脚本实例运行的快速而简单的方法是什么?
最佳答案
使用flock(1)
在文件描述符上创建独占作用域锁。这样您甚至可以同步脚本的不同部分。
#!/bin/bash
(
# Wait for lock on /var/lock/.myscript.exclusivelock (fd 200) for 10 seconds
flock -x -w 10 200 || exit 1
# Do stuff
) 200>/var/lock/.myscript.exclusivelock
这确保了 (
和 )
之间的代码一次仅由一个进程运行,并且该进程不会等待锁定太久。
警告:此特定命令是 util-linux
的一部分.如果您运行 Linux 以外的操作系统,它可能可用也可能不可用。
关于bash - 确保一次只运行一个 shell 脚本实例的快捷方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/185451/