自删除bash脚本
发布时间:2020-12-15 18:49:36 所属栏目:安全 来源:网络整理
导读:即使遇到一个声明来删除自己,bash脚本怎么执行呢? 例如,当我运行test.sh脚本时: --some commands--rm test.sh--some more commands--end 脚本执行直到结束,然后再删除它 实际发生的是bash使文件保持打开,rm不会停止. 所以rm调用libc函数“unlink()”,它将
即使遇到一个声明来删除自己,bash脚本怎么执行呢?
例如,当我运行test.sh脚本时: <--some commands--> rm test.sh <--some more commands--> end 脚本执行直到结束,然后再删除它
实际发生的是bash使文件保持打开,rm不会停止.
所以rm调用libc函数“unlink()”,它将从它的目录中删除“link”到inode.这个“link”实际上是一个文件名和一个inode号(你可以看到inode号与ls – 一世). 只要程序打开,inode就存在. 您可以轻松测试此声明如下: $echo read a> ni $bash ni 而在另一个窗口中: $pgrep -lf bash ni 31662 bash ni $lsof -p 31662|grep ni bash 31662 wmertens 255r REG 14,2 7 12074052 /Users/wmertens/ni $rm ni $lsof -p 31662|grep ni bash 31662 wmertens 255r REG 14,2 7 12074052 /Users/wmertens/ni 该文件仍然打开,即使你不能再看到它在ls.所以这不是bash读取整个文件 – 它只是没有真的去,直到bash完成它. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |