linux删除自身可执行文件,可执行文件在linux上删除

作为超级用户,我在

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来修复你的系统.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值