解读Linux档案执行中的锁定现象
今天还没准备好打开电脑,太累了,想睡觉,但一个人发了信息,问了一个问题,然后打开电脑,没想到是一个很有代表性的问题,而且还涉及了几天前我工作的一个bug,值要记录下来:
在Linux的领导下,一个可执行文件执行-练习1,RM,F可以删除它,MV可以删除它,MV也可以取代它的其他练习1美元,但CP美元其他可以显示文件忙解决。
这其实不是一个真正的问题,因为只要你的基础知识扎实,问题显然是很简单的,一个原因,那就是,Linux的文件是基于引用计数的。现在的问题是如何将这些命令运行一个文件的引用计数。下面的讨论是基于一个独家开放模式。
如果一个文件被打开,那么它的引用计数将增加1,如果调用RM,事实上只有上行的底部,也就是说它会减少1的引用计数,所以尽管你在界面(命令行或图形用户界面)看不到它,但当它是打开还是计数,只有当它是封闭的,引用计数为0,就删除它。
除了mv命令,它实际上是一个重命名源文件,如果MV已经存在的对象,然后执行一个类似的效果,RM的目标,这是断开链接,引用计数理论,如果目标文件已经打开,然后关闭时,灯将不复存在,如果不是开放的,所以当MV对象直接删除,因为在断开链接,引用计数为0。
最后,看看CP CP命令,触摸不到的源文件和目标文件的元数据本身(时间除外),它只是打开源文件和目标文件,执行在源文件的读取,并将结果写入目标文件本质上是一个IO操作,可执行文件被独占打开因此,不允许写,会出错。
这里不再是上市的内核源代码,可以实现系统调用的参考和加深理解,但最好不要干,或strace和objdump的结合是比较好的,你知道,他们所说的,什么是其他参数调用,和千篇一律的写作之间没有区别。所以这有什么这样的错误我的工作吗这个错误是来自OpenVPN的日志记录,并配置日志回滚。回滚配置文件的关键字段如下所示:
大小4M
missingok
旋转9
压缩
delaycompress
创建644 XX XX
hellip;
作为一个结果,VPN。日志。1继续在日志回滚到vpn.log.1.this写的原因是命名。在logrotate的man页面,有一个copytruncate配置。意思不是重命名,而是复制,然后将原始文件截断到这个。
不要小看这些很简单的命令,不是很多人真正了解的,即使真正了解问题,也能真正对应的原则不是很多,很简单的事情如果你能做透彻的理解和应用,进一步深入研究是有意义的。