自删除bash脚本

前端之家收集整理的这篇文章主要介绍了自删除bash脚本前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
即使遇到一个声明来删除自己,bash脚本怎么执行呢?
例如,当我运行test.sh脚本时: @H_301_2@<--some commands--> rm test.sh <--some more commands--> end

脚本执行直到结束,然后再删除

实际发生的是bash使文件保持打开,rm不会停止.

所以rm调用libc函数“unlink()”,它将从它的目录中删除“link”到inode.这个“link”实际上是一个文件名和一个inode号(你可以看到inode号与ls – 一世).

只要程序打开,inode就存在.

您可以轻松测试此声明如下:

@H_301_2@$echo read a> ni $bash ni

而在另一个窗口中:

@H_301_2@$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完成它.

猜你在找的Bash相关文章