确保给定脚本只有一个实例正在运行的最简单/最好的方法是什么——假设它是 Linux 上的 Bash?
目前我正在做:
ps -C script.name.sh > /dev/null 2>&1 || ./script.name.sh
但它有几个问题:
- 它将检查放在脚本之外
- 它不允许我从不同的帐户运行相同的脚本 - 我有时会喜欢。
-C
只检查进程名的前 14 个字符
当然,我可以编写自己的 pidfile 处理,但我觉得应该有一个简单的方法来做到这一点。
原文由 user80168 发布,翻译遵循 CC BY-SA 4.0 许可协议
如果所有用户的脚本都相同,则可以使用
lockfile
方法。如果您获得了锁,则继续,否则显示一条消息并退出。举个例子:
获得
/tmp/the.lock
后,您的脚本将是唯一可以执行的脚本。完成后,只需卸下锁即可。在脚本形式中,这可能看起来像: