分页: 1 / 1

如何类似flock那样,但是不要求执行命令?

发表于 : 2016-10-22 22:35
科学之子
如何类似flock那样,但是不要求执行命令?

代码: 全选

#!/bin/bash
echo $0
flock $0 sh -c ''
bc
我试图这么写,但flock运行空命令后就直接释放了锁
此时如果此脚本再次运行,就不受到锁的保护

Re: 如何类似flock那样,但是不要求执行命令?

发表于 : 2016-10-22 22:39
自由建客

代码: 全选

exec 4>"$LOCK_FILE"
flock -e 4  # 这里若是不能获取锁就会一直阻塞
...  # 做你想做的
flock -u 4

Re: 如何类似flock那样,但是不要求执行命令?

发表于 : 2016-10-22 22:43
自由建客
叫你不看手册,我不懂洋文都看了

Re: 如何类似flock那样,但是不要求执行命令?

发表于 : 2016-10-23 1:45
科学之子
自由建客 写了:叫你不看手册,我不懂洋文都看了
弱问看的是什么手册能得出exec这种用法?
这次我发帖前真看了手册,但当时没看懂那个number的意思 :Cry
看得是"man flock"
没看出exec这种用法

Re: 如何类似flock那样,但是不要求执行命令?

发表于 : 2016-10-23 9:33
自由建客
科学之子 写了:
自由建客 写了:叫你不看手册,我不懂洋文都看了
弱问看的是什么手册能得出exec这种用法?
这次我发帖前真看了手册,但当时没看懂那个number的意思 :Cry
看得是"man flock"
没看出exec这种用法
number 是文件描述符,man flock 有说明。
exec 打开文件,这是 bash 的基本功。 :em06

Re: 如何类似flock那样,但是不要求执行命令?

发表于 : 2018-11-26 11:00
科学之子
自由建客 写了: 2016-10-22 22:39

代码: 全选

exec 4>"$LOCK_FILE"
flock -e 4  # 这里若是不能获取锁就会一直阻塞
...  # 做你想做的
flock -u 4
补充一下如何获取空闲的文件描述符:
https://stackoverflow.com/questions/416 ... or-in-bash

Re: 如何类似flock那样,但是不要求执行命令?

发表于 : 2019-04-23 12:29
lilydjwg
科学之子 写了: 2018-11-26 11:00
自由建客 写了: 2016-10-22 22:39

代码: 全选

exec 4>"$LOCK_FILE"
flock -e 4  # 这里若是不能获取锁就会一直阻塞
...  # 做你想做的
flock -u 4
补充一下如何获取空闲的文件描述符:
https://stackoverflow.com/questions/416 ... or-in-bash
zsh 直接用变量作为文件描述符名称就不用纠结哪个可用了:

代码: 全选

exec {fd}<>$LOCK_FILE
flock -e $fd

Re: 如何类似flock那样,但是不要求执行命令?

发表于 : 2019-04-23 17:21
astolia
lilydjwg 写了: 2019-04-23 12:29
科学之子 写了: 2018-11-26 11:00 补充一下如何获取空闲的文件描述符:
https://stackoverflow.com/questions/416 ... or-in-bash
zsh 直接用变量作为文件描述符名称就不用纠结哪个可用了:

代码: 全选

exec {fd}<>$LOCK_FILE
flock -e $fd
bash也一样啊,你没看那个链接?

代码: 全选

exec {fd}>$LOCK_FILE
flock -e $fd