位置: 编程技术 - 正文

Linux中文件执行中的锁定怪现象解释(linux 文件执行)

编辑:rootadmin
本来今天不准备开电脑了,太困了,想睡觉,然而一哥们儿短信都发过来了,要问个问题,于是还是打开了电脑,没想到是一个很有代表性的问题,顺便也牵扯了前些天我的工作中的一个bug,值得记录下来。问题如下: linux下,一个可执行文件exe1正在执行中,rm –f可以将其删除,mv可以将其移除,mv $other exe1也可以将其替换,但是cp $other exe1则显示文件忙,求解。 这实际上并不是一个真正的问题,因为只要你的基础知识扎实,这个问题显然很简单,原因只有一个,那就是linux文件基于引用计数。现在问题是这些个命令如何来操作一个文件的引用计数。下面的讨论都是基于独占打开的模式。 如果一个文件已经被打开,那么它的引用计数会增加1,如果调用了rm,实际上底层只是unlink了一下,也就是说将它的引用计数减少1,这样虽然你在界面上(命令行或者GUI)看不到它了,但是它被打开时的计数还在,只有当它被关闭的时候,引用计数变为0,才彻底删除它。 再说mv命令,它实际上只是一个源文件的rename而已,如果mv的目标本来就存在,那么在目标上执行一个类似rm的效果,也就是unlink一下,结合引用计数的理论,目标文件如果已经被打开,那么当关闭的时候将不复存在,如果本来就没有被打开,那么mv的时候,目标直接被删除,因为unlink之后,它的引用计数变成了0。 最后看一下cp命令,cp的话并不触动源文件和目标文件元数据本身(时间戳除外),它只是打开源文件和目标文件,在源文件上执行read,然后将结果write到目标文件,实质上是一个IO操作,对于可执行文件,是独占打开的,并不允许写入,因此会出错。 这里就不再列出内核源码了,可以自行参考系统调用的实现而加深理解,不过最好别干巴巴的看,还是结合strace以及objdump比较好,要知道是怎么以及什么时候调用的,以及调用参数是什么,否则就和八股文没区别了。那么这和我工作中的bug有什么关系呢?这个bug源于OpenVPN的日志记录,并且配置了日志回滚,回滚配置文件关键字段如下: size 4M missingok rotate 9 compress delaycompress create xx xx … 结果当日志回滚成了vpn.log.1之后,这个vpn.log.1依然继续被写入。这个原因正是rename造成的。在logrotate的man页面中,有一个copytruncate配置,其含义就是不进行rename,而只是copy,然后将原来的文件truncate,加入这个就可以了。 千万不要小看这些很简单的命令,真正理解的人并不多,即使真正的理解,出现问题,能真正对应到原理也不多,很简单的东西如果能彻底做到透彻的理解并且活用,再往深入学习才是有意义的。

推荐整理分享Linux中文件执行中的锁定怪现象解释(linux 文件执行),希望有所帮助,仅作参考,欢迎阅读内容。

Linux中文件执行中的锁定怪现象解释(linux 文件执行)

文章相关热门搜索词:linux文件执行权限,linuxsh文件执行,linux命令行执行文件,linux 执行文件的路径,linux 文件执行,linux文件执行权限命令,linux文件执行权限,linux文件执行权限命令,内容如对您有帮助,希望把文章链接给更多的朋友!

理解 pkg-config 工具(linux编译辅助工具) 你在Unix或Linux下开发过软件吗?写完一个程序,编译运行完全正常,在你本机上工作得好好的,你放到源代码管理系统中。然后,告诉你的同事说,你

linux中bin与sbin目录的作用及区别介绍 在linux系统中,有两个重要的目录:bin与sbin,分别包括/bin、/usr/bin/与/sbin、/usr/sbin/。bin:bin为binary的简写,主要放置系统的必备执行文件,例如:cat、cp、

linux下零拷贝技术介绍 传统的数据传输方式很长一段时间内,数据拷贝的认识仅仅停留在应用程序层,实际上隐藏在背后的数据拷贝行为比想象的要多的多。在传输数据的时

标签: linux 文件执行

本文链接地址:https://www.jiuchutong.com/biancheng/360637.html 转载请保留说明!

上一篇:Linux常用系统管理命令(top、free、kill、df) (linux 常用系统)

下一篇:理解 pkg-config 工具(linux编译辅助工具)(pkg-config命令)

  • 自然人收缴税务客户端
  • 2021年专项附加扣除必须要确认吗
  • 社保可以抵扣什么税
  • 广告制作税目
  • 金税盘全额抵扣申报流程
  • 计提贷款损失准备金遵循以下原则
  • 工程款开票后增值税怎么做分录?
  • 双倍余额递减法折旧公式
  • 什么叫经纪代理服务
  • 入库前的挑选整理费用计入采购成本吗
  • 税务申报零申报怎么操作
  • 反倾销税税率查询
  • 分支机构享受了税收优惠,是由总机构备案还是分支机构备案?
  • 房地产企业有投资性房地产吗
  • 用友u8计提企业所得税
  • 为什么要结转成本差异
  • 法院执行费怎么收取法律依据
  • 不同业务的进项税额抵扣
  • 无法偿还的应付款项予以转账
  • 营业外收支计入应纳税所得额吗
  • 装修公司购装修材料入什么科目?
  • 生产车间制造费用包括
  • 收到的投资属于什么科目
  • 兼职劳务费税率是多少
  • 重装win7系统鼠标键盘没反应
  • cpqdfwag.exe是什么进程 能结束吗 cpqdfwag进程查询
  • 房地产企业销售额扣除土地价款
  • php常用时间函数
  • PHP:imagecolorclosest()的用法_GD库图像处理函数
  • 企业取得的搬迁补贴
  • 所有者权益期末减期初等于净利润还是利润总额
  • php curl_exec
  • php常用工具
  • vue set up
  • 暂估入库以及暂估的区别
  • 丧葬补贴金和抚恤金怎样领取
  • 如何计提所得税费用科目
  • 增值税发票上多了一个点能刮掉吗
  • 成本法合并抵消分红
  • 织梦怎么新建页面
  • 设计模式模板方法和策略模式对比
  • 电子发票报销需要签字吗
  • 交易性金融资产公允价值变动计入
  • 原始凭证的基本内容有会计分录吗
  • 收到承兑汇票在什么科目
  • 暂估成本账务处理办法
  • 其他收益会计科目核算什么
  • 奖金做预发年底会发吗
  • 差额事业单位的工资是由财政开支吗
  • 建设期利息有哪些
  • 无奖有票是什么意思
  • 商业汇票的会计核算
  • 产品成本核算要求有哪几项
  • 净现值率和现值指数与净现值什么时候它们评价结果一致
  • 企业成本结转分录
  • 参加会议正常应该交多少钱
  • 生产企业代理出口退税
  • 盈余公积必须提折旧吗
  • sql 清除日志
  • 注册表修改数据
  • 哪个是win8.1更新win10的补丁
  • linux几种安装方式
  • fedora下的bridge和nat设置方法
  • mac系统删除系统软件
  • linux查看当前时间戳
  • OS X10.10.5 Yosemite beta2发布 os x10.10.5yosemite beta2官网下载地址
  • mac计算器快捷键
  • win7无法打开windows功能
  • 升级win10系统错误代码0x80072F8F
  • win8文件夹打不开
  • win7怎么查看系统位数
  • 统计动态分析
  • cocos2dx4.0入门
  • Open quote is expected for attribute "name" associated with an element type "item".
  • android 科大讯飞语音引擎 调用无响应
  • 国家税务局通用机打发票查询
  • 如何在网上开税票发票
  • 新吉高铁开工典礼
  • 计提消费税的会计分录讲解
  • 怎么登录吉林省公务员网络培训学院
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设