文件锁

Linux 支持的文件锁技术主要包括劝告锁(advisory lock)和强制锁(mandatory lock)这两种。在 Linux 中,不论进程是在使用劝告锁还是强制锁,它都可以同时使用共享锁和排他锁(又称为读锁和写锁)

劝告锁:内核只提供加锁以及检测文件是否已经加锁的手段,但是内核并不参与锁的控制和协调。因此,劝告锁并不能阻止进程对文件的访问,而只能依靠各个进程在访问文件之前检查该文件是否已经被其他进程加锁来实现并发控制。

强制锁:与劝告锁不同,强制锁是一种内核强制采用的文件锁。如果有进程不遵守游戏规则,硬要往加了锁的文件中写入内容,内核就会加以阻拦

channel.lock()对应Linux上fcntl(4, F_SETLKW, {l_type=F_WRLCK, l_whence=SEEK_SET, l_start=0, l_len=0}) = 0 阻塞方式进行文件级别的排它锁。但是是劝告锁还是强制锁?需要文件系统的支持

判断文件是否被加强制锁

1.修改要加强制锁的文件的权限:设置 SGID 位,并清除组可执行位。这种组合通常来说是毫无意义的,系统用来表示该文件被加了强制锁。例如:

# touch /mnt/testfile

# ls -l /mnt/testfile

-rw-r--r-- 1 root root 0 Jun 22 14:43 /mnt/testfile

# chmod g+s /mnt/testfile

# chmod g-x /mnt/testfile

# ls -l /mnt/testfile

-rw-r-Sr-- 1 root root 0 Jun 22 14:43 /mnt/testfile

lslocks

lslocks可以列出所以加锁的文件

COMMAND PID TYPE SIZE MODE M START END PATH

mysqld 1022 POSIX 96K WRITE 0 0 0 /var/lib/mysql/mysql/servers.ibd

java 1799 POSIX 278B WRITE 0 0 0 /media/sf_data/IdeaProjects/DemoTest/person.txt

上面结果可以看出,我使用了java的FileLock对person.txt对整个文件加上了排他的劝告锁。

文件级锁还是记录锁:START 和 END看出

共享还是排他:MODE中看出,这里是WRITE因此是排他。如果是读就是共享

M 应该是强制锁还是劝告锁。0表示不是强制锁。

还有的办法就是,使用vim去编辑,如果写成功说明加的是劝告锁

参考:

linux检测文件是否加锁,Linux 文件锁 - mrsuperli的个人空间 - OSCHINA - 中文开源技术交流社区...相关推荐

  1. linux修改组群名字,Linux用户和组 - 回忆斑斑驳驳的个人空间 - OSCHINA - 中文开源技术交流社区...

    用户相关操作: 1)         su 用户:切换用户但不切目录 2)         su – 用户:切换用户并切换目录 3)         sudo:允许系统管理员让普通用户执行一些或者全部 ...

  2. linux i2c子系统入口,I2C子系统1 - ARM_Linuxx的个人空间 - OSCHINA - 中文开源技术交流社区...

    I2C子系统 核心 i2c_driver 结构体 分配.设置.注册一个i2c_driver结构体 static struct i2c_driver i2c_example_driver = { .dr ...

  3. linux 命令 dsm,群晖常用指令 - osc_sa9nsts3的个人空间 - OSCHINA - 中文开源技术交流社区...

    输入uname –a 回车,用 uname 命令能够看到 NAS 的 CPU 架构.指令集等内容如下: Linux DSM 3.10.105 #23739 SMP Fri Jun 8 12:51:05 ...

  4. linux ssh Unused,ssh免密码登录 - leopardlinux的个人空间 - OSCHINA - 中文开源技术交流社区...

    两台服务器之间的密钥登录 生成密钥 先看 $HOME/.ssh/ 下面有没有已经生成的密钥文件对, 如下: id_dsa id_dsa.pub id_rsa id_rsa.pub 如果已经存在上述任一 ...

  5. linux恢复安卓数据,安卓数据恢复2 - ranfs的个人空间 - OSCHINA - 中文开源技术交流社区...

    安卓数据恢复2 之前提供一种没有使用adb的方式,进行镜像的方法,存在两个问题,Quicksshd在有些手机上出现兼容性问题,在电脑上安装软件和操作还是有些麻烦. 本文用华为P7-L05手机为例,使用 ...

  6. linux ospf 命令,OSPF单区域配置 - linuxprobe2020的个人空间 - OSCHINA - 中文开源技术交流社区...

    为了弥补距离矢量路由协议的不足,IEFI组织开发了一种基于链路状态的内部网关协议OSPF 实验环境:红,绿,蓝三个颜色区域代表三个不同网络的办公场所,要求使用OSPF协议实现网络互通. pc1:172 ...

  7. linux清除定时器,定时器以及清除定时器 - adustdu2015的个人空间 - OSCHINA - 中文开源技术交流社区...

    html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml ...

  8. Linux黑洞路由命令,配置黑洞路由 - osc_ywuazj5t的个人空间 - OSCHINA - 中文开源技术交流社区...

    拓扑图 在R1上配置一条静态路由:ip route-static  192.168.0.0   16     10.1.1.2:在R2上配置一条默认静态路由:ip route-static 0.0.0 ...

  9. 服务器每天产生1t文件,编写自己的服务器 - osc_popfjd1t的个人空间 - OSCHINA - 中文开源技术交流社区...

    由于学习接口测试,对服务器的原理产生浓厚兴趣,对最近的收获做个总结 由于浏览器本身就是客户端,对服务器进行发报并接受回报,进行解析显示,所以客户端就不进行编写 服务器代码: #encoding=utf ...

最新文章

  1. R语言apriori算法进行关联规则挖掘(限制规则的左侧或者右侧的内容进行具体规则挖掘)、查看限制了规则的右侧之后挖掘到的规则(置信度排序,只查看左侧即可)
  2. 【Android 应用开发】Android 返回堆栈 与 任务
  3. 鼓浪屿天气预报软件测试,厦门鼓浪屿天气预报15天
  4. ASP.NET中使用非托管DLL
  5. ROS MATLAB 启动
  6. 研究下抓站开源项目simplecd的源代码吧
  7. js上传文件获取文件流
  8. 深入理解CatBoost
  9. linux命令行测试上网,如何使用linux命令行来测试网速
  10. 南华大学计算机科学学院,南华大学计算机科学与技术学院介绍
  11. C语言经典题目:求阶乘n!=n*(n-1)*...*1,阶乘和s=1!+(2)!+(3)!+...+n!
  12. 论文笔记SAR-U-Net: Squeeze-and-excitation block and atrous spatial pyramid pooling based residual U-Net
  13. UNet语义分割模型的使用-Pytorch
  14. 计算机打字键盘怎么控制,键盘是怎样分区的,打字时每个手指分别可控制哪些键...
  15. GCT考试通过后获得证书是双证还是单证?
  16. 2018网站优化人员不同阶段在做哪些事
  17. Server Disconnect
  18. 【飞郁2022新课程】32 - xdbg的认识与设置
  19. Sensor信号输出YUV、RGB、RAW DATA、JPEG【转】
  20. PHP 分页(limit)

热门文章

  1. 使用Typora+PicGo配置Gitee图床
  2. 学计算机考研能考人工智能么,本科学这4个专业,考研后可以选择“人工智能”方向...
  3. 千里眼的修练方法--末法时代即将结束
  4. 基于最小二乘支持向量机(LS-SVM)进行分类、函数估计、时间序列预测和无监督学习附Matlab代码
  5. Django常见面试题总结(二)
  6. RISC-V GNU Toolchain及交叉编译
  7. android源码编译设置c++编译器,Android Stuido:使用CMake编译多个C/C++文件(1)
  8. 【亚马逊(上海)-AI Lab-DGL】实习生投递+面试(凉经)
  9. [华为matepad pro 12.6]实现平板编程(Xfce4篇)(Termux+Ubuntu21.04+Xfce4+VNC)
  10. Deepin系统正版官方下载站