盖上盖子后,是否可以配置Macbook卸载所有外部驱动器?


10

我有一个运行Mavericks的新的13英寸Macbook Pro。此计算机已连接到外部USB驱动器,用于我的Time Machine备份和外部存储。TimeMachine每天进行几次备份,并且大多数情况下该驱动器处于非活动状态那天。

当我急于开会,去服务器机房或一天结束时要回家时,我想执行以下操作:

  1. 快速关闭Macbook的盖子。
  2. 让Mac尽快并根据需要强制卸载所有外部驱动器。我愿意等待几秒钟以关闭所有灯。

关闭Mac的盖子后,是否可以使计算机自动卸载所有外部驱动器?

当前,如果我忘记卸载外部驱动器,我的Mac将在以后警告我“磁盘未正确弹出。如果可能,请始终先弹出磁盘,然后再拔出磁盘或关闭磁盘。”

我知道最好的做法是始终在删除磁盘接口之前干净地卸载磁盘,但是我正在寻找一种自动化的解决方案。我不太担心一个Time Machine备份映像是否被中断或损坏,因为下一个后续备份之一可以工作,而且我很少需要从备份中还原。由于文件系统是日记文件系统,因此日记透明地处理了许多其他文件系统损坏错误。


由于注销您的帐户会卸载所有驱动器,因此注销是否有很大的弊端?另外,我相信操作系统会刷新所有文件系统IO写入的内容,因此对我而言,睡眠期间出现弹出实际问题的机会对我来说似乎很低-对于日记文件系统而言,倍增。
bmike

Answers:


8

有许多应用可以在睡眠状态下运行脚本:

  • SleepWatcher-简单而有效。
  • 场景 -也可以在其他时间(例如唤醒后)运行脚本。
  • ControlPlane-更可自定义,可让您在许多不同的事件之后运行脚本。

如下所示的bash脚本将卸载所有指定的磁盘:

VOLUMES="/Volumes/drive1 /Volumes/drive2 /Volumes/drive3"
for volume in $VOLUMES ; do [ -d $volume ] && umount -f $volume done

要卸载所有卷,除了/

umount -A

或更干净...

osascript -e 'tell application "Finder" to eject (every disk whose ejectable is true)'

6

另一个选择是Jettison(可通过App Store获得)-这就是我几个月以来一直在使用的东西,根本没有任何问题。它最近获得了从睡眠中唤醒时自动重新安装仍连接的磁盘的选项。

较新的v1.3.0(仅直接下载-我认为它正在进入App Store)的价格更高,他们在FAQ中解释了为什么这样做。

如果我没看错的话,可以花2美元购买App Store版本,然后免费升级到直接下载版本,但是我没有确认或尝试过。

这两种价格都不是很昂贵,但像SleepWatcher选项那样却不是免费的。


4

我将详细说明@grgarside的答案。

我正在使用SleepWatcher

  1. 从端口安装:

    sudo port install sleepwatcher
    
  2. /opt/local/share/doc/sleepwatcher/ReadMe.rtf通过和通过阅读本手册man sleepwatcher。阅读Macworld上的这本旧Machint:使用SleepWatcher System治疗失眠的Mac。根据Machint,我可以简单地将代码添加到~/.sleep~/.wakeup,或添加到全局文件/etc/rc.sleep/etc/rc.wakeup

  3. 将以下代码放入~/.sleep

    osascript -e 'tell application "Finder" to eject (every disk whose ejectable is true)'
    
  4. 激活sleepwatcher。更改<key>Disabled</key><true/><key>Disabled</key><false/>

    sudo vim /Library/LaunchDaemons/org.macports.sleepwatcher.plist
    sudo launchctl load /Library/LaunchDaemons/org.macports.sleepwatcher.plist
    sudo launchctl list | grep sleepwatcher
    
  5. 校验:

    ps aux |grep [s]leepwatcher
    root              421   0.0  0.0  2459568   1012   ??  Ss    2:45PM   0:00.00 /opt/local/bin/daemondo --label=sleepwatcher --start-cmd /opt/local/sbin/sleepwatcher --verbose --sleep /opt/local/etc/rc.sleep --wakeup /opt/local/etc/rc.wakeup ; --pid=exec
    root              422   0.0  0.0  2460656   1888   ??  S     2:45PM   0:00.17 /opt/local/sbin/sleepwatcher --verbose --sleep /opt/local/etc/rc.sleep --wakeup /opt/local/etc/rc.wakeup
    
  6. 做完了!


我可以对此答案进行一些评论,以确保我.plist正确激活了该东西。
Stefan Lasiewski 2013年

循序渐进,但是对我来说不起作用。睡眠后,我拔下外部硬盘驱动器,MacBook5,3醒来,当我打开盖子时,出现弹出磁盘错误的错误消息。
萨鲁·林德斯托克

这对我有用,但仅在某些时候。不知道为什么。
Stefan Lasiewski 2013年

1
我仍在使用ML,因此它不是特定于Mavericks的,并且在机器处于活动状态时也不会出现错误。我注意到.sleep脚本有时在唤醒时执行,好像在进入睡眠状态时没有足够的时间执行。
2013年

1
这里也是一个很好的指南:damacy.net/post/9377132648/…– 2015
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.