加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

自删除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完成它.

(编辑:李大同)

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

    推荐文章
      热点阅读