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

flock 防任务重入

上一次没跑完、下一次又触发会造成数据错乱;用 flock 对任务加锁,-n 拿不到锁立即退出,是 cron 防叠加的标准做法。

Linux 运维命令速查系统更新于 2026-10-12
用途防止定时任务并发重入
语法flock [-n] [-w 秒] 锁文件 命令
所属util-linux

crontab 用法

crontab 用法
*/5 * * * * /usr/bin/flock -n /var/lock/sync.lock /opt/scripts/sync.sh >> /var/log/sync.log 2>&1

脚本内用法

脚本内用法
#!/bin/bash
exec 9>/var/lock/backup.lock
flock -n 9 || { echo "another instance running, skip"; exit 0; }
# ... 任务主体 ...
锁文件放 /var/lock 或 /run/lock(tmpfs,重启自动清理);放 /tmp 可能被清理器删掉导致锁失效。

易错点

  • flock 只锁「同一锁文件路径」:路径写不一致等于没锁
  • 任务被 kill -9 时锁由内核释放,但脚本残留的半成品数据仍需自行清理

数据来源与参考

  • man 1 flock
  • RHEL 文档:cron 任务防重复执行实践

相关工具

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