Linux flock command

linux在多个进程同时操作同一份文件的时候,很容易导致文件混乱,这时候就需要锁,来保证文件的完成性。
flock主要三种操作类型:

  • lock_sh,常被用作读共享锁;
  • LOCK_EX,只能被一个进行使用,常被用作写锁;
  • LOCK_UN,释放锁;

使用共享锁LOCK_SH,如果是读取,不需要等待,但如果是写入,需要等待读取完成。
使用独占锁LOCK_EX,无论写入/读取都需要等待。
LOCK_UN,无论使用共享/读占锁,使用完后需要解锁。
LOCK_NB,当被锁定时,不阻塞,而是提示锁定。

用法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[root@i-2ld7xfi6 ~]# flock -h

Usage:
flock [options] <file|directory> <command> [command args]
flock [options] <file|directory> -c <command>
flock [options] <file descriptor number>

Options:
-s --shared get a shared lock
-x --exclusive get an exclusive lock (default)
-u --unlock remove a lock
-n --nonblock fail rather than wait
-w --timeout <secs> wait for a limited amount of time
-E --conflict-exit-code <number> exit code after conflict or timeout
-o --close close file descriptor before running command
-c --command <command> run a single command string through the shell

-h, --help display this help and exit
-V, --version output version information and exit

For more details see flock(1).

参考

Linux文件锁实现之flock(2)与fcntl(2)
Linux shell脚本单实例运行之flock

-------------本文结束感谢您的阅读-------------