Linuxshellflock详解,linux之flock实现shell锁
电影 推荐flock⼯具可以实现shell脚本或命令⾏锁,使⽤⽅式:
美少女的谎言 第四季1. flock [-sxon] [-w timeout] lockfile [-c]
2.flock [-sxon] [-w timeout] lockdir [-c]
3.flock [-sxun] [-w timeout] fd
元宵节英语怎么说前2种⽅式主要⽤在命令⾏中,通过创建⽂件或⽂件夹来实现锁机制。
第3种⽅式⽤在shell脚本中,使⽤如下:
(
flock -s 200
# ... commands executed under lock ...
) 200>/var/lock/mylockfile
十分钟了解中国
⽤> or >>,如果⽂件不存在,可以创建,但必须有写权限,如果⽤
默认情况,如果锁不能⽴即获得,flock等待直到锁可⽤。
使⽤参数如下:
[root@slave-b ~]# flock
flock (util-linux-ng 2.17.2)
贝立兹
Usage: flock [-sxun][-w #] fd#
flock [-sxon][-w #] file [-c]
flock [-sxon][-w #] directory [-c]
-s --shared Get a shared lock
-x --exclusive Get an exclusive lock
-u --unlock Remove a lock
-
n --nonblock Fail rather than wait
-w --timeout Wait for a limited amount of time
师说翻译-o --clo Clo file descriptor before running command
-c --command Run a single command string through the shell
-h --help Display this text
呕心沥血是什么意思-V --version Display version
介绍⼀下参数:
-s为共享锁,在定向为某⽂件的FD上设置共享锁⽽未释放锁的时间内,其他进程试图在定向为此⽂件的FD上设置独占锁的请求失败,⽽其他进程试图在定向为此⽂件的FD上设置共享锁的请求会成功。
-e为独占或排他锁,在定向为某⽂件的FD上设置独占锁⽽未释放锁的时间内,其他进程试图在定向为此⽂件的FD上设置共享锁或独占锁都会失败。只要未设置-s参数,此参数默认被设置。
-u⼿动解锁,⼀般情况不必须,当FD关闭时,系统会⾃动解锁,此参数⽤于脚本命令⼀部分需要异步empire state
执⾏,⼀部分可以同步执⾏的情况。
-n为⾮阻塞模式,当试图设置锁失败,采⽤⾮阻塞模式,直接返回1,并继续执⾏下⾯语句。
-w设置阻塞超时,当超过设置的秒数,就跳出阻塞,返回值设置为1,并继续执⾏下⾯语句。
-o必须是使⽤第⼀种格式时才可⽤,表⽰当执⾏command前关闭设置锁的FD,以使command的⼦进程不保持锁。-c执⾏其后的comand。
实例:
itsallgay
#!/bin/bash
{
flock -n 3
浮躁怎么办
[ $? -eq 1 ] && { echo fail; exit; }
echo $$
} 3<>mylockfile