bash - 确保一次只运行一个 shell 脚本实例的快捷方式

标签 bash shell process lockfile

确保在给定时间只有一个 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/

相关文章:

linux - 由于 mkdir 拒绝,无法安装软件

bash - 如何从 unix 脚本发送电子邮件

macos - Hadoop2.7.3 : Cannot see DataNode/ResourceManager process after starting hdfs and yarn

linux - Linux,如何使用Shell脚本进行文件操作?

shell - 两两反转文件中的行

java - BufferedReader 似乎无限读取第一行

c - 使用 fgets 读取输入在 C 中返回重复行

string - 在 bash 或 sed 中逐行计算匹配前后的字符串长度

bash - 运行使用 OpenVINO 和 OpenCV 的 Go 程序 -/usr/bin/ld : cannot find -lXXX

bash - unix shell 替换字符串两次(一行)