加入收藏 | 设为首页 | 会员中心 | 我要投稿 常州站长网 (https://www.0519zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

可执行文件在linux上删除

发布时间:2020-12-24 08:44:15 所属栏目:Linux 来源:网络整理
导读:作为超级用户,我在 linux上执行了以下命令 rm rm 它会自行消除.因为当进程正在执行时,它的引用计数 不是零.因此无法删除.所以我很困惑, 它是如何以及为何发生的? 我尝试了同样的chown 0000 chown. cp -r Dir1/ Dir2/ 在上面的命令中,当我只在复制过程中删

作为超级用户,我在 linux上执行了以下命令

rm rm

它会自行消除.因为当进程正在执行时,它的引用计数
不是零.因此无法删除.所以我很困惑,
它是如何以及为何发生的?

我尝试了同样的chown 0000 chown.

cp -r Dir1/ Dir2/

在上面的命令中,当我只在复制过程中删除源目录时会发生什么?

解决方法

它与临时文件相同.

回想一下,创建一些临时文件的常用方法是将open(2)文件(保留其文件描述符),然后是unlink(2)(同时仍然具有打开的文件描述符).然后,只要进程正在运行且文件描述符没有close(2)-d,文件的数据就会保留在文件系统中.

这是因为文件确实是目录中的inodes-not文件名. (目录包含将名称与inode相关联的条目).

内核管理“已使用”(或“已打开”)inode集合,该集合包含由进程执行的inode(实际上,某些地址映射中涉及的inode,如通过mmap(2)或execve(2))

所以在/ bin / rm / bin / rm启动之后,内核对rm二进制文件有一个引用作为进程的可执行文件.

当它处理unlink系统调用时,它暂时有两个引用(一个是执行中的进程,另一个是传递给unlink内核实现的路径/ bin / rm)并将其减少为一个.

当然你应该避免输入/ bin / rm / bin / rm,但是你通常会有一些像sash这样的独立shell来修复你的系统.

(编辑:常州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读