当Mac由于Spotlight而拒绝时,如何弹出外部驱动器?


40

我已将外部磁盘插入Mac。现在,我要弹出它。但是我的Mac顽固地拒绝了,并说某个应用程序可能正在使用该磁盘。

我没有启动任何应用程序,也没有从磁盘打开任何文件。

我已经下载并安装了该应用程序,  什么让我着迷?这个程序是相当不错的。她告诉我该进程  mds正在使用我的磁盘。

我已经杀死了这个过程  mds以及几个过程  mdworker。这些是针对Spotlight的。但是,此类过程再次产生。

我怎样才能弹出我的从盘我的 Mac吗?

我有Mac OS X 10.6.8。


是否只是等待流程结束?我发现这实际上对我有效。
Chogg

Answers:


27

只需关闭驱动器的索引并擦除卷上日志的内容。为此,请打开“终端”并输入以下命令:

sudo mdutil -Ei off "/Volumes/Name_of_Drive"

您必须以管理员身份运行此过程。出现提示时输入密码。可能需要重新启动。

或者,按照西蒙·怀特(Simon White)的建议,只需关闭机器,然后拔下驱动器的电源即可。需要注意的是,再次连接时,驱动器将开始建立索引。


4
只需停止该过程就足够了。sudo mdutil -i off "/Volumes/Name_of_Drive"-E擦除并重建索引)。下次安装驱动器时,它将重新开始扫描。要永久禁用对该驱动器的扫描,请使用-dsudo mdutil -d "/Volumes/Name_of_Drive")。通过mdutil在命令行中键入来查看所有这些参数以及更多内容。
丹妮德

2
喜欢技巧,但是请不要建议在命令后退出...我没有注意到,并且丢失了我在那里的输出历史。
拉韦米尔'16

@njboot-否。命令“ history”只是给我输入命令的历史记录,而没有给我返回结果。
Nicolas Barbulesco'2

1
发出mdutil命令后,我仍然无法弹出磁盘。因此,我还发布了“ sudo killall mds”,使它起作用。
Thomas Tempelmann

21

您可以尝试从命令行卸载它:

diskutil unmount /Volumes/MountPoint

或用力:

diskutil unmount force /Volumes/MountPoint

如果仍然失败,请检查磁盘使用的是什么:

sudo fs_usage -w -f filesys | grep Volumes

或使用lsof

sudo lsof | grep Volumes

(仅当lsof以管理员身份运行时,某些进程才会启动。)


要禁用临时Spotlight,请运行:

sudo mdutil -a -i off

然后sudo mdutil -a -i on重新启用。


其他可能有用的应用程序:Whats Keeping Me


2
我只是发现lsof以用户身份运行时不会列出Spotlight(mds,mds_store,mdworker)。但是,sudo lsof | grep Volumes工作正常。(“ Whats Keeping Me”分别具有“作为管理员”复选框。)
hans_meine15年

5

我经常发现是mds阻止了我卸载卷。

sudo killall mds

然后(快速)尝试再次弹出该音量。

就我而言,我正在当前Mac上安装另一个Mac的主卷。我不想禁用Spotlight,因为当外部卷返回到另一台Mac(作为其启动卷)时,我希望恢复索引编制。


有趣。也许“快速”是关键!
Nicolas Barbulesco '16

谢谢!除了强制弹出(这是我不想做的)之外,这是唯一对我有用的答案。
addison

2

为了防止Spotlight对驱动器建立索引,请在TextEdit中创建一个纯文本文件,不包含任何内容,仅包含.metadata_never_index的标题,然后保存到外部。取消选中使用扩展名“ txt” ...,并告诉TextEdit,是的,您确实希望将其保存在前面(以使其不可见)。

我不确定这是否会立即阻止它,但将来会阻止它。

或者,将此Applescript制作为应用程序,以强制弹出[强制弹出的常见警告...] ...感谢MacTipper博客

    property show_credits : true

set the_volumes to do shell script "ls /Volumes/"
tell application "Finder" to set the_HD to path to home folder as string

set ejectable_volumes to {}
repeat with i in (every paragraph of the_volumes)
    if the_HD does not start with i then
        set end of ejectable_volumes to (i as string)
    end if
end repeat
if (count of items of ejectable_volumes) is 0 then
    tell me to activate
    display dialog "Sorry, but there are no ejectable volumes."
else if (count of items of ejectable_volumes) is 1 then
    tell me to activate
    set the_result to item 1 of ejectable_volumes as string
    display dialog ("Eject \"" & the_result & "\"?") buttons {"No", "Yes"} default button 2 cancel button "No"
    set the_path to quoted form of ("/Volumes/" & the_result as string)
    do shell script "hdiutil eject -force " & the_path
else
    tell me to activate
    set the_result to choose from list ejectable_volumes with prompt "Please choose a volume to eject (You can select multiple items):" with multiple selections allowed
    if the_result is not false then
        repeat with j in the_result
            set the_path to quoted form of ("/Volumes/" & j as string)
            do shell script "hdiutil eject -force " & the_path
        end repeat
    end if
end if

if show_credits is true then
    tell me to activate
    set the_credits to button returned of (display dialog "This applescript brought to you by The MacTipper Blog.\n\nhttp://mactipper.com" buttons {"Don't Show Again", "Visit TMB", "OK"} default button 3) as string
    if the_credits is "Don't Show Again" then
        set show_credits to false
    else if the_credits is "Visit TMB" then
        open location "http://mactipper.com"
    end if
end if

谢谢。但是...“强行驱逐[[关于强行驱逐的常见警告...]”这令人担忧。如果我同意承担损坏磁盘的风险,则只需拔下它的电源即可。
Nicolas Barbulesco 2014年

然后设置no spotlight标志并等待它看到并停止索引。
Tetsujin

或者,您可以sudo diskutil unmountDisk force /Volumes/Name_of_Volume从终端运行以强制执行此操作。该脚本不是必需的。
njboot 2014年

@NicolasBarbulesco这些不一样。强行卸下卷与拔出插头不同。在后一种情况下,您会突然从设备上物理断电,正如人们想象的那样,这可能会损坏以几K rpm旋转的磁盘。在前者中,您只是强制设备卸载卷。然后,磁盘会适当旋转,然后像往常一样拔出插头。更安全。
njboot

@njboot-我没有尝试您的diskutil命令。但是我确实尝试过使用Disk Utility进行等效操作-无济于事。
Nicolas Barbulesco 2014年

2

您可以尝试强制退出Finder,这对我有用。Finder挂在USB驱动器上,因此无论如何挂断,都可以通过强制退出和重新启动来释放。


那怎么办?强制退出查找器?
拉斯克斯

Option + Command + ESC!
sdive

但这可以解决我所关注的Spotlight问题吗?
Nicolas Barbulesco '16

1

如果由于某种原因无法断开驱动器的连接,只需关闭计算机即可。关闭计算机电源后,可以安全地断开驱动器的连接。然后启动计算机。这不仅使您能够安全地拔出驱动器,而且还可以确保mds进程在实际挂起的情况下重新启动。

如果您决定不想在该驱动器上使用Spotlight,则要阻止该索引被索引,您所要做的就是将驱动器添加到“系统偏好设置”的“ Spotlight”面板的“隐私”选项卡中。Spotlight将忽略驱动器。

另外,如果您确实想在该驱动器上使用Spotlight,则在计算机第一次看到该驱动器时建立索引是必不可少的。一旦建立索引,对每个文件的每次更改都会对其进行更新,因此不会使您再次等待。但是,如果您在Spotlight菜单中看不到进度栏,则可能是mds挂起了。同样,在这种情况下,只需关闭计算机,然后断开驱动器的连接。


1
我当然可以关闭Mac。但这不是一个选择。
Nicolas Barbulesco,2014年

我喜欢让Spotlight知道我的磁盘的想法。但是我暂时试图使Spotlight忽略我的磁盘。通过使用系统偏好设置→聚光灯。这不起作用:“由于未知错误,这是不可能的。” 大错误消息!苹果一定从Micro $ oft聘请了叛逃者!我也试着让时间行动。我去上班,让Spotlight整天为磁盘建立索引。那天晚上,我回来了,问题依旧。
Nicolas Barbulesco,2014年

我实际上认为问题在于,mds要么是不告诉系统驱动器已完成,要么是在完成后不退出,这样做可以保持驱动器直到进程以某种方式被杀死(例如关闭)。如果mds在声称使用驱动器时看到未使用CPU,则强行弹出驱动器。
bauerMusic

@bauerMusic-如何“强制弹出驱动器”?
Nicolas Barbulesco '16

@NicolasBarbulesco“强制弹出驱动器”是系统在一段时间后提供的选项。如果您尝试弹出,它应该显示“正在尝试弹出驱动器”(或类似内容),并且在大约一分钟(不成功)后,显示另一个弹出窗口,其中有一个选项可以强制弹出。
bauerMusic '16

1

另一个简单的选择是通过磁盘实用程序将其弹出。


您是否阅读了Tetsujin答案中的评论?磁盘工具不提供“强制”选项
klanomath 2014年

去尝试一下。当任何类型的外部驱动器因为“正在使用”而无法弹出时,通过磁盘实用程序进行的简单弹出总是对我有用。
Tim Undheim 2014年

我确实尝试使用“磁盘工具”弹出驱动器。但这没有用。
Nicolas Barbulesco 2014年

1
很抱歉得知。“磁盘工具”会弹出可卸载的“正在使用”磁盘,恰好在运行10.7.5的本机上。您可能会研究DiskWarrior。
Tim Undheim 2014年

1
无论出于何种原因,在有问题的磁盘上使用Disk Utility unmount命令对我都有效。
MiB 2015年

0

您可以告诉Spotlight它永远不要索引该驱动器,因此您不必担心它。

在10.11系统偏好设置中,有一个“聚光灯”条目,其中有一个名为“隐私”的标签。单击“ +”,选择驱动器,然后完成。只需关闭“系统偏好设置”,请等待几秒钟,以使系统注意到更新,然后您应该可以退出。现在,下次连接时它将不再开始为磁盘建立索引,因此将来不会再出现此问题。


我试过了 那没有用。在这里看到我的评论:apple.stackexchange.com/questions/142459/...
萨科Barbulesco
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.