首页/系统/Linux 运维命令速查/flock 等待与超时模式
定时任务与计划50 条

flock 等待与超时模式

默认 flock 阻塞等待;-w 秒限时等待,-n 立即失败;搭配 -E 可自定义「拿不到锁」的退出码,便于监控区分跳过与失败。

Linux 运维命令速查系统更新于 2026-10-12
用途按业务选择阻塞或跳过策略
语法flock [-n | -w 秒] [-E 退出码] 锁文件 命令

示例

示例
# 最多等 300 秒,等不到返回码 75
flock -w 300 -E 75 /var/lock/report.lock /opt/report.sh

# 立即失败(跳过本次)
flock -n /var/lock/report.lock /opt/report.sh || echo "skip: busy" >> /var/log/report.log

# 监控里区分:退出码 75=拿锁超时,其它=脚本失败
备份类任务建议 -w 短等待(容忍前一实例收尾);秒级高频任务建议 -n 直接跳过。

易错点

  • -w 0 与 -n 不同:前者仍有一次非阻塞尝试的语义差异,跨版本行为以 man 为准
  • 退出码被 flock 占用后脚本自身退出码被掩盖,监控对账时要约定清楚

数据来源与参考

  • man 1 flock(-w/-n/-E 语义)

相关工具

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