Bash 查看仍在运行的已删除shell脚本的内容

Bash 查看仍在运行的已删除shell脚本的内容,bash,Bash,另一篇帖子提供了一个自删除shell脚本的解决方案rm--“$0” 如果在脚本顶部插入这一行,那么脚本将在开始运行时删除自身 是否可以在删除的脚本继续运行时获取其内容(意味着仍通过ps-eaf | grep scriptname)显示进程?通过这种方式,您可以将脚本恢复到其原始位置$pid包含脚本的pid,例如12345 pid=12345 cat /proc/$pid/fd/255 > "$(readlink /proc/$pid/fd/255 | sed 's/ (delet

另一篇帖子提供了一个自删除shell脚本的解决方案
rm--“$0”

如果在脚本顶部插入这一行,那么脚本将在开始运行时删除自身


是否可以在删除的脚本继续运行时获取其内容(意味着仍通过
ps-eaf | grep scriptname
)显示进程?

通过这种方式,您可以将脚本恢复到其原始位置<代码>$pid包含脚本的pid,例如12345

pid=12345
cat /proc/$pid/fd/255 > "$(readlink /proc/$pid/fd/255 | sed 's/ (deleted)$//')"

rm
不删除文件;它删除文件系统条目。脚本继续运行的原因是进程直接持有inode的打开文件句柄,而不是继续使用文件系统条目。我相信,您可以使用
lsof
获取进程打开文件句柄的inode,然后直接访问inode。在Linux上,您可以通过查看
/proc/\u pid\ufd
来访问进程保持打开状态的文件。当您只知道inode编号时,我不知道有任何其他方法可以访问文件。与此相关。