如何检查文件是否被其他进程锁定?

时间:2018-02-21 10:28:09

标签: bash shell unix flock

我正在使用Flock对文本文件进行独占锁定并在其中写入内容,然后在此之前我想检查其他进程是否对该文件有任何锁定,如果有,那么我想做别的东西宁愿在队列中,这是flock中的默认动作。

所以,我想要像

这样的东西
if locked; then
    do something

else
    ( 
    flock -e 200
    echo "In critical section"
    echo text >> file.txt
    echo text added to File 
    )   200>file.txt 

bash有没有办法检查这个? 我已经研究了lsof,但我无法解决问题。

1 个答案:

答案 0 :(得分:1)

尝试使用...

( flock -n 200 || exit 1
  echo "In critical section"
  echo text >> file.txt
  echo text added to File 
) 200>file.txt

'-n'标志将阻止阻塞,如果未获得锁定,退出代码将为'1'。