我正在尝试修复外部硬盘上的权限。插入后我无法清空垃圾箱,因为我收到一堆“此类文件正在使用中”。我在网上读到,这可以通过修复驱动器上的权限来解决。我目前无法卸载驱动器,因为在我重新启动或拔下并重新插入它时它正在使用中。我曾经lsof
看到什么在使用它,但我无法理解这一点,并且似乎无法找到明确的指南了解这意味着什么。输出如下:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
mds 59 root 23r DIR 1,9 1701 5 /Volumes/SEAGATE
mds 59 root 31r DIR 1,9 1701 5 /Volumes/SEAGATE
命令
ps ax | egrep '[ /](PID|mds)'
输出
PID TT STAT TIME COMMAND
660 ?? Ss 0:12.49 /System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Support/mds
673 ?? Ss 0:08.68 /System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Versions/A/Support/mds_stores
命令
/usr/bin/sudo kill 660
输出
//new line$
命令
sudo lsof /dev/disk2s2
输出
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
mds 1599 root 11r DIR 1,8 1764 5 /Volumes/SEAGATE
以该顺序
如果我连续运行几次 bash 文件,我可以得到
PID TT STAT TIME COMMAND
1737 ?? Ss 0:00.69 /System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Support/mds
但驱动器仍然被 mds 锁定
只是为了表明添加了异常,以下是屏幕截图:
答案1
诊断速度太快
我在网上读到,这可以通过修复驱动器上的权限来解决。
不幸的是,从你的问题描述来看,这是错误的。需要修复的是外部磁盘上的文件系统SEAGATE
。
分析lsof
命令的输出lsof
表明该命令mds
(第一列)实际上正在读取您的文件系统/volumes/SEAGATE
(最后一列)。要了解有关这个奇妙命令的更多信息,只需阅读 MacOS X 附带的手册:
man lsof
mds
是 MacOS X 服务器,负责提供对所有文件系统元数据的访问。其最重要的客户端是Finder
和Spotlight
。
如果您无法弹出外部磁盘,这是合法的,因为mds
仍在读取它。如果你仍然提取它,你肯定会损坏它的文件系统。
释放并修复文件系统
现在它已损坏,以下是修复此问题的方法。
打开
System Preferences > Spotlight
选择Privacy
窗口并添加 ( +) 您的 SEAGATE 外部磁盘以停止Spotlight
尝试为其建立索引。如果
mds
仍在运行:ps ax | egrep '[ /](PID|mds)'
你必须杀死它:
_pid_to_kill=`ps ax | egrep '[ /]mds' | awk '{print $1}'` if [ "${_pid_to_kill}" ] ; then echo "${_pid_to_kill}" | while read _pid ; do /usr/bin/sudo kill ${_pid} done fi
检查
lsof
您的SEAGATE
磁盘现在是否可用:lsof /Volumes/SEAGATE
如果没问题,请转到 4。
如果杀掉后
mds
没有释放/Volumes/SEAGATE
,则有另一个进程通过 访问该文件系统mds
。 (这可能是防病毒软件或垃圾软件。这是另一种规模的调查)。在这种情况下,快速路径将是停止launchd
启动mds
。请按如下方式进行:
cd /System/Library/LaunchDaemons /usr/bin/sudo launchctl unload com.apple.metadata.mds.plist
检查您是否没有更多
mds
进程:ps ax | egrep '[ /](PID|mds)'
检查
lsof
您的SEAGATE
磁盘现在是否可用:lsof /Volumes/SEAGATE
这应该没问题,转到 4。
启动
Disk Utility
并检查您的磁盘SEAGATE
。我怀疑需要进行一些维修。在这种情况下进行修复。弹出它,并检查是否不再有任何“文件正在使用”错误消息。
打开
System Preferences > Spotlight
选择Privacy
窗口并移除 ( -) 您的 SEAGATE 外部磁盘以允许Spotlight
为其建立索引。如果您通过了 strep 3,您必须停止
launchd
启动mds
,则必须重新启用此功能(否则管理文件系统的很多事情都会失败)。请按如下方式进行:
cd /System/Library/LaunchDaemons /usr/bin/sudo launchctl load com.apple.metadata.mds.plist
答案2
Spotlight 似乎正在为此驱动器建立索引。可能存在导致 Spotlight 挂起并不断损坏该驱动器的问题。
该mds
进程是元数据服务器。尝试终止此进程,然后告诉聚光灯不要索引此驱动器。
要禁用聚光灯索引,请转至系统首选项 -> Spotlight -> 隐私,并将磁盘添加到排除列表。您可能必须终止mds
并重新启动它才能获得聚光灯以停止索引。
不确定这是否是您的问题,但这将是一个很好的起点。