linux - 如何防止 shell 脚本的多个实例?

标签 linux shell flock

使用centos5 下面是我的 shell 脚本。我想防止它出现在多个实例中。但是如果我使用“kill -9”选项,它就不起作用了。我也怀疑它会在重启时起作用。 无论如何应用这个逻辑?它还可以处理 kill -9 或重启或任何导致脚本手动退出的信号?

[root@manage aaa]# cat script.sh

#!/bin/sh
set -e

scriptname=$(basename $0)
pidfile="/var/run/${scriptname}"

# lock it
exec 200>$pidfile
flock -n 200 || exit 1
pid=$$
echo $pid 1>&200

#### SCRIPT CODE

最佳答案

尝试使用 flock 命令。从手册页:

(
  flock -n 9 || exit 1
  # ... commands executed under lock ...
) 9>/var/lock/mylockfile

关于linux - 如何防止 shell 脚本的多个实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25683787/

相关文章:

linux - 通过 elinks 输出管道尾部

c++ - Linux - 运行 valgrind 时不显示源文件/行

linux - 检查监视器 : must be configured to display at least 256 colors. 未设置显示环境变量。失败<<<<

c++ - 如何配置系统日志以便应用程序日志转到特定文件

php - file() 在读取时是否锁定文件?

c - flock() : is it possible to merely check if the file is already locked, 如果没有实际获取锁?

linux - Bash:WAITING超时

bash - bash中的浮点除法

linux - 从变量 unix 中提取值

c - 哪些平台实现了flock?