shell脚本有没有用过锁,就是在你运行时,别人没法运行 flock

是的,我用过在 shell 脚本中使用 flock 命令来实现锁,确保在同一时间只有一个实例在运行。

flock 命令是 Linux 系统自带的一个工具,可以通过文件锁来实现。它的使用方法很简单,只需要在脚本中指定锁文件的路径,并用 flock 命令锁定锁文件即可:

#!/bin/bash

# 定义锁文件路径
LOCKFILE=/tmp/my_script.lock

# 锁定锁文件,如果锁定失败则退出
exec 200>>"$LOCKFILE"
flock -n 200 || exit 1

# 脚本逻辑
echo "Script is running..."
sleep 10

# 解锁锁文件
flock -u 200

在上面的代码中,exec 200>>"$LOCKFILE" 表示将文件描述符 200 与锁文件关联。当我们使用 flock 命令时,就可以指定文件描述符 200 来锁定该文件。如果锁定失败,则直接退出脚本。

脚本运行完毕后,使用 flock -u 200 命令来解锁锁文件。

需要注意的是,flock 命令会自动创建锁文件,如果该文件不存在的话。因此,在 shell 脚本中使用 flock 命令时,需要确保锁文件的路径是唯一的。此外,以上脚本仅限于同一用户使用,如果多个用户可能同时运行该脚本,则需要使用具有访问控制的目录来存储锁文件。

posted @ 2023-04-22 21:19  flytoyou  阅读(202)  评论(0)    收藏  举报