首页/系统/Linux 运维命令速查/flock 文件锁防并发执行
本包目录(613 条)
文件与目录76 条文本处理77 条网络命令82 条
进程与作业69 条
磁盘与文件系统51 条用户与权限44 条日志与排查40 条systemd 与服务42 条包管理34 条性能与监控48 条定时任务与计划50 条

flock 文件锁防并发执行

互斥跑批的轻量方案:同一把锁同时只允许一个实例运行,cron 重叠、脚本防重入的标准解法;进程退出锁自动释放。

Linux 运维命令速查系统更新于 2026-10-12
用途命令/脚本互斥(防重叠执行)
语法flock [-n] 锁文件 命令 | flock -n 数字fd
行为默认排队等锁;-n 拿不到立即失败(退出码非 0),-w 限时等待

常用示例

常用示例
flock -n /var/lock/backup.lock -c '/usr/local/bin/backup.sh'
flock -w 30 /var/lock/sync.lock /usr/local/bin/sync.sh   # 最多等 30 秒
# cron 防重叠:
*/10 * * * * /usr/bin/flock -n /var/lock/report.lock /usr/local/bin/report.sh
# fd 形式(脚本内分段持锁):
exec 9>/var/lock/app.lock
flock -n 9 || { echo '已有实例在跑'; exit 1; }
锁由内核 flock 调用维护、不在文件内容里:进程崩溃锁自动消失,不会有「死锁文件」残留。

易错点

  • cron 场景不加 -n 会「排队堆叠」:等锁进程越积越多,一定要 -n 或 -w 限时
  • NFS 上 flock 语义受挂载/版本影响:跨主机互斥别依赖它,用分布式锁或数据库锁

数据来源与参考

  • man 1 flock(util-linux 手册)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌