Linux 命令行:`flock` 文件锁

一、flock 基础命令格式 flock [选项] <文件|文件描述符> <命令> # 或 flock [选项] <文件|文件描述符> -c <命令字符串> 二、核心选项及示例说明 1. -s (共享锁 Shared Lock) 作用 获取共享锁(读锁),允许多进程同时读取,但阻止排他锁。 场景 需要多个进程同时读取某个文件,但要求写入操作互斥。 示例 # 两个终端同时运行此命令不会阻塞 flock -s data.lock -c "cat data.txt; sleep 5" 2. -x (排他锁 Exclusive Lock ) 作用 获取排他锁(写锁),禁止其他进程获取任何类型的锁。 场景 需要对文件进行写入操作时,保证数据一致性。 示例 # 第二个进程会阻塞直到第一个完成 flock -x log.lock -c "echo 'New log entry' >> app.log; sleep 3" 3. -n (非阻塞 Non-blocking) 作用 非阻塞模式。若无法立即获取锁,立即失败并退出,不会等待。 场景 快速判断资源是否可用,无需等待。 示例 if flock -n 200; then echo "Got lock, doing work..." sleep 2 else echo "Resource busy, exiting." fi 200>data.lock 4. -w <秒数> (超时等待 Timeout) 作用 指定等待锁的超时时间。超过设定时间仍无法获取锁则放弃。 ...

July 3, 2023 · 2 min · 308 words