自删除bash脚本

前端之家收集整理的这篇文章主要介绍了自删除bash脚本前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
即使遇到一个声明来删除自己,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完成它.

猜你在找的Bash相关文章