Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Shell 如何清除rm-rf在基于BusyBox的系统上删除的数据,而无需重新启动系统?_Shell_Unix_Memory Management_Busybox_Rm - Fatal编程技术网

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

Shell 如何清除rm-rf在基于BusyBox的系统上删除的数据,而无需重新启动系统?,shell,unix,memory-management,busybox,rm,Shell,Unix,Memory Management,Busybox,Rm,我正在尝试创建一个shell脚本,以便为基于busybox的Unix系统轻松执行一些长命令 系统没有类似于lsof的命令,但有其他基本命令。我面临的问题是,当添加新功能时,我需要删除某些文件夹,并使用adb push将新文件夹推送到系统中 当我这样做的时候,我得到一个错误,说设备上没有空间了。所以我需要做一个能量循环 我想知道在执行rm-rf之后是否有任何方法可以删除数据,而不必执行电源循环,即关闭并重新启动。在基于Linux的系统上,文件占用的空间在 该文件未被任何文件夹引用 任何进程都不会打

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

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

当我这样做的时候,我得到一个错误,说设备上没有空间了。所以我需要做一个能量循环


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

在基于Linux的系统上,文件占用的空间在

  • 该文件未被任何文件夹引用
  • 任何进程都不会打开该文件
  • “rm”将满足第一个条件,但是,您必须关闭所有打开文件以清除空间的进程,否则,它只会在重新启动(电源循环)期间发生,此时fsck实用程序将标识“孤立”i节点,而不是任何文件夹引用的节点

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

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

    在基于Linux的系统上,当

  • 该文件未被任何文件夹引用
  • 任何进程都不会打开该文件
  • “rm”将满足第一个条件,但是,您必须关闭所有打开文件以清除空间的进程,否则,它只会在重新启动(电源循环)期间发生,此时fsck实用程序将标识“孤立”i节点,而不是任何文件夹引用的节点

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

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

    我确实尝试了telinit,但没有成功。至于停止仍保持文件打开状态的服务,我将如何找到这些服务?系统没有lsof。我假设您对系统中运行的内容有一些了解。在busybox(ps-ef)上运行的进程是什么?。此外,考虑安装/PROC(如果还没有安装),看看输出的代码> LS-L/PROC/[09] */FD/我认为我解决了这个问题。@ MathewThomas为了读者的利益,你能分享你的解决方案吗?我需要验证这个解决方案是否正确,它确实是我试过的两倍。我所做的不是很精通技术,但我创建了一个包含所有活动进程的文件夹列表,然后删除了文件夹,然后进行了电源循环,然后获取了一个活动进程列表。然后发现哪些都依赖于文件。我尝试了telinit,但没有成功。至于停止仍保持文件打开状态的服务,我将如何找到这些服务?系统没有lsof。我假设您对系统中运行的内容有一些了解。在busybox(ps-ef)上运行的进程是什么?。此外,考虑安装/PROC(如果还没有安装),看看输出的代码> LS-L/PROC/[09] */FD/我认为我解决了这个问题。@ MathewThomas为了读者的利益,你能分享你的解决方案吗?我需要验证这个解决方案是否正确,它确实是我试过的两倍。我所做的不是很精通技术,但我创建了一个包含所有活动进程的文件夹列表,然后删除了文件夹,然后进行了电源循环,然后获取了一个活动进程列表。然后找出哪些都依赖于这些文件。