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 命令时,需要确保锁文件的路径是唯一的。此外,以上脚本仅限于同一用户使用,如果多个用户可能同时运行该脚本,则需要使用具有访问控制的目录来存储锁文件。

浙公网安备 33010602011771号