Linux系统上文件已删除句柄已释放空间未释放是什么原因?

Linux系统上文件已删除句柄已释放空间未释放是什么原因?,第1张

在Linux系统上,如果一个文件已经被删除,但是该文件的句柄仍然被某个进程所持有,那么这个文件的空间不会被立即释放。这是因为在Linux系统中消腊,文件的删除并不是真正的删除,而是将文件的链接数减少1。只有当文件的链接数为0时,文件的空间才会被释放。

当一个进程打开一个文件时,内核会为该进程分配拿缓滑一个文件句柄,该句柄包含了文件的元数据信息和文件的位哪梁置信息等。当进程关闭该文件时,内核会释放该文件句柄,并将文件的链接数减少1。如果该文件的链接数为0,那么该文件的空间会被释放。

但是,如果一个进程打开了一个文件,并且在该文件被删除之前一直持有该文件的句柄,那么该文件的链接数不会减少,文件的空间也不会被释放。这种情况下,文件的空间只有在该进程关闭该文件句柄时才会被释放。

因此,如果一个文件已经被删除,但是该文件的句柄仍然被某个进程所持有,那么该文件的空间不会被立即释放。只有当该进程关闭该文件句柄时,文件的空间才会被释放。

有的CAD文件打开后,在使用、清理(PURGE命令)、核查文件以及保存文件时,程序会提示该文件包含“多重句柄”。

CAD文拍陪冲件包含多重句柄,原因是该文件通常是基于CAD平台开发的软件在编辑文件时留下的命令脚本,这些多重句柄脚本会增大文件的容量(但一般编辑者对这些隐藏的句柄又不是特别需要,这时对文件容量的清理和缩小成为编辑者最关心的事情)。这种情况下,使用常规的“PURGE”清理命令和“文件核查”命令清理后的文件,在最后袭歼保存阶段会使得CAD软件报错,造成程序死机、文件无法得到有效清理后的保存。

对于这种情况的处理方法是:

(1)在CAD命令行输入:(dictremove (namedobjdict) "ACAD_DGNLINESTYLECOMP")

        注:上述输入包含最外面的括号

(2)回车

(3)在CAD命令行输入:PURGE,执行“清理”命令,按常规的清理所有不需要且可清理的多余图元。

(4)在CAD命令行输入:AUDIT,执行“核查:命令,核查并更正检查出的错误。

(5)保存文件,此时即可有效保存文件,且文件容量会得到较大程度的清理乱拆和缩小。

一、常规解决办法:

1.注消或重启电脑,然后再试着删除。

2.进入“安全模式删除”。

3.在纯DOS命令行下使用DEL,DELTREE和RD命令将其删除。

4.如果是文件夹中有比较多的子目录或文件而导致无法删除,可先删除该文件夹中的子目录和文件,再删除文件夹。

5.在任务管理器中结束Explorer.exe进程,然后在命令提稿凯示符窗口删除文件。

6.如果你有安装ACDSee,FlashFXP,Nero,Total这几个软件,可以尝试在这几个软件中删除文件夹。

二、高级解决方案:

1.磁盘错误

运行磁盘扫描,并扫描文件所在分区,扫描前确定已选上修复文件和坏扇区,全面扫描所有选项,扫描后再删除文件。

2.预读机制:

某些媒体播放中断或正在预览时会造成无法删除。在“运行”框中输入:REGSVR32 /U SHMEDIA.DLL,注销掉预读功能。或删除注册表中下面这个键值:[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{87D62D94-71B3-4b9a-9489-5FE6850DC73E}\InProcServer32]。

3.防火墙:

由于反病毒软件在查毒时会占用正在检查的文件,从而橡银导致执行删除时提示文件正在使用,这时可试着暂时关闭它的即时监控程序,或许可以解决。

4.OFFice、WPS系列软件:

OFFice的非法关闭也会造成文件无法删除或改名。重新运行该程序,然后正常关闭,再删除文件。

5.借助WinRAR:

右击要删除的文件夹,选择“添加到压缩文件”。在d出的对话框中选中“压缩后删除源文件,”随便写个压缩包名,点确定。

6.权限问题:

如果是2000和xp系统,请先确定是否有权限删除这个文件或文件夹。

7.可执行文件的删除:

如果可执行文件的映像或程序所调用的DLL动态链接库文件还在内存中未释放,删除时就会提示文件正在使用,解决方法是删除系统的页面文件,Win98中是Win386.SWP,Win2000/XP是pagefile.sys。注意要在DOS下删除。

8.文件粉碎法:

使用文件粉碎机,如File Pulverizer,可以彻底删除一些顽固文件。

三、制作一个无法删除的“文件保险箱”

文件夹无法删除,未必就是不好的事情,如果把一些重要的文件放在这个目录中,不就可以避免误删了吗?一个文件名只包含空格的文件夹在Windows中是不允许创建和删除的,但在DOS下却可以创建文件名包含\的文件夹。

在我们使用Windows的过程中,会遇到各种各样的问题。即使是最简单的删除文件也可能遇到麻烦,要么系统提示“文件正在被另一个人或程序使用”,要么就是报告“访问被拒绝”……如果你也遇到过这种情况,不妨看看本文。

原因一:文件正在梁敬宴使用中

在删除文件时,经常会遇到的一个问题是,文件正在使用,无法删除。如果试图删除以独占访问而不是以共享访问方式打开,并且正在使用中的文件时,系统就会出现错误提示:“无法删除xxx:文件正在被另一个人或程序使用”。而另一种情况则是,能够使用删除命令删除文件,但在打开文件的进程释放该文件之前,文件实际上并未删除。

要解决上述问题,需要确定拥有文件打开句柄的进程,然后关闭此进程。在以前的Windows中,我们可以使用资源工具包的Oh.exe。但在XP中,安装好的Support

Tools却不带Oh.exe。不过,XP提供了一个新的Openfiles.exe命令行工具,它能够报告进程打开的各个文件。与Oh.exe相似,Openfiles.exe也要求打开系统内核监视,这会消耗一些内存,并降低系统 *** 作的性能。打开系统监视的命令是“Openfiles

/local

on”,它会启用系统全局标志“维护对象列表”,需重新启动系统才能生效。重新启动系统后,在命令提示符下执行不带参数的“Openfiles”,即可看到各个进程打开文件的清单。

原因二:文件系统损坏

磁盘上的坏区、其他硬件故障或者软件错误都可能会损坏文件系统,使文件出现问题而无法删除。典型 *** 作失败的方式可能各不相同,当检测到文件系统损坏时,通常会收到一条提示运行Chkdsk的信息。

如果遇到这种情况,可以在磁盘卷上运行Chkdsk实用工具以纠正任何存在的错误。根据损坏的性质,Chkdsk也许能够恢复文件数据,也许无法恢复,但Chkdsk可以使文件系统返回到一种在内部一致的状态。有关Chkdsk实用工具的命令及参数,可以在命令提示符下执行“Chkdsk

/?”查阅。

原因三:文件使用了存取控制列表

如果某个文件使用了存取控制列表(Access Control

List,简称ACL),而 *** 作者又没有相应的权限,那么删除文件时就可能出现“访问被拒绝”的提示。

通常情况下,管理员具有取得任何文件所有权的隐含能力,文件所有者也具有修改文件权限的隐含能力。不过,这些默认的权限是可以被修改的。

要解决因ACL导致文件无法删除的问题,就必须以具有相应权限的用户身份登录,或者是赋予自己删除文件的权限,然后才能删除文件。要注意的是, *** 作者必须拥有这些文件的所有权才能更改权限。如果是因为文件使用了不规范的ACL而不能使用某些安全工具显示或修改其权限时,可以尝试使用命令行工具Cacls.exe进行修改。

原因四:文件名使用了一个保留名称

众所周知,像AUX、LPT1这样的名称是为旧式DOS设备保留的。为了向后兼容,在Windows中不允许使用这些文件名,也不能使用典型的Win32文件调用来创建它们。反之,如果文件名是Win32命名空间中的一个保留名称,则同样可能无法删除此文件。

要解决此类问题,可以在Linux或其他非Windows的 *** 作系统下重命名或删除该文件。另外,如果能够使用特定的语法指定到该文件的路径,也可以使用一些内置的命令绕过典型的Win32保留名称检查。例如,在Windows

XP中使用以下命令,可以删除名为“lpt1”的文件(Del命令后面加上“?”来避免Windows检查文件名的合法性):

Del [URL=http://3800cc.com/news/w31/file://?c:]?c:[/URL]文件路径lpt1

原因五:无效的文件名称

如果文件名中包括一个无效名称,例如文件名有一个尾随空格,或一个尾随句点,或者文件名仅由一个空格组成,同样可能无法删除该文件。值得一提的是,如果使用典型的Win32语法打开名称中有尾随空格或尾随句点的文件,则尾随空格或句点在打开实际文件之前会被去掉。因此,如果在同一个文件夹中有两个分别名为“File.txt”和“File.txt

”的文件(注意第二个文件名后面的空格),当使用标准Win32调用打开第二个文件时,实际上会打开第一个文件。同样,如果文件的名称仅是“

”(一个空格字符),当尝试使用标准Win32调用打开它时,实际上会打开该文件的父文件夹。在此情况下,如果尝试更改这些文件上的安全设置,就有可能会意外更改其他文件上的设置。

与解决文件名使用保留名称的方法类似,可以使用一种适当的内部语法删除此文件。例如要删除包含尾随空格的文件,可以使用如下命令:

Del [URL=http://3800cc.com/news/w31/file://?]?[/URL] c:文件路径(尾随空格的文件名)

原因六:文件路径太深无法访问

文件位于比最大路径字符数(MAX_PATH)更深的路径中,可能导致文件无法访问,当然,这种情况较为少见。如果路径深的原因是文件夹名称太长,最简便的解决方案是使用自动生成的8.3名称访问该文件。如果8.3路径也太长,可以从根文件夹开始重命名文件夹,缩短它们的名称,以使目标文件的路径深度不超过MAX_PATH。若是文件的深度超过128个文件夹,可以通过创建一个网络共享,使其位于文件夹树中尽可能深的位置,然后通过访问此共享来访问文件。

一般情况下,如果遇到因文件路径太深无法访问的情况,可以通过使用创建文件的软件来管理这些文件。也就是说,如果有一个程序,它可以创建超过MAX_PATH的文件,则我们也可以使用该程序来管理这些文件。此外,对于通过网络共享创建的深层次结构的文件也可以通过使用同一共享来进行删除。

前面介绍了Windows系统中文件或文件夹无法删除的几种原因以及解决的方法。在某些情况下,可能还会遇到上述各种原因的不同组合,使得删除文件的过程更加复杂。这就需要读者能够举一反三,灵活应用微软提供的各种实用工具进行解决了。

Windows XP中删除AVI文件的问题

很多朋友可能会遇到Windows XP中无法删除AVI文件的问题,这主要是由于Windows

XP视频预览功能的Bug所导致的。你可以尝试用以下方法进行删除。

方法一 在运行命令框中输入“Regs-vr32/u

Shmedia.dll”并回车,卸去Windows

XP的视频文件预览功能。当以后想要恢复视频预览功能时,再使用“Regsvr32Shmedia.dll”命令重新注册即可。

方法二

先打开命令提示符窗口,然后在任务管理器中结束Explorer进程,再从命令提示符窗口中切换到保存视频文件的文件夹下,用Del命令删除文件。

方法三

如果安装了双系统,可以从另一个系统,如Win98下进行删除。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12325128.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存