如何在基于 BusyBox 的系统上清除由 rm -rf 删除的数据,而无需重新启动系统?



我正在尝试创建一个shell脚本,以便轻松地为基于busybox的Unix系统执行一些长命令。

系统没有像lsof这样的命令,但有其他基本命令。我面临的问题是,当添加新功能时,我需要删除某些文件夹并使用adb push将新文件夹推送到系统中。

当我这样做时,我收到一个错误,说设备上没有剩余空间。所以我需要做一个电源循环。

我想知道是否有任何方法可以在执行rm -rf后删除数据,而无需执行电源循环,即关闭重新启动

在基于 Linux 的系统上,文件占用的空间在以下情况下被删除

  1. 该文件未被任何文件夹引用
  2. 文件未被任何进程打开

"rm"将满足第一个条件,但是,您必须杀死所有打开文件以清除空间的进程,否则,它只会在重新启动(电源循环(期间发生,当 fsck 实用程序将识别"孤立"i-节点时,未被任何文件夹引用。

没有关于哪些进程持有打开的句柄的信息。以下是一些通用替代方案:

  • 如果有一个(或几个(进程使大文件保持打开状态,请尝试停止/重新启动这些服务。
  • 您可以在打开较大的文件之前截断它们,而不是"rm"。"回显>大文件"将释放所有文件空间。当然,这可能会对正在运行的进程产生负面影响,但从问题来看,这似乎不是问题。
  • 理论上,您可以使用"telinit"将 busybox 从标准模式切换到不同的运行级别。如果服务配置为正确关闭,则可以在重新启动后使系统恢复到重新启动状态,而无需重新启动电源

相关内容

最新更新