【问题标题】:is there a way to eject all external hard drives from the command line? (OS X)有没有办法从命令行弹出所有外部硬盘驱动器? (OS X)
【发布时间】:2015-05-09 23:07:50
【问题描述】:

有没有办法从命令行弹出 OS X 计算机上所有已安装的硬盘驱动器卷?如果我可以将它包装在 shell 脚本中,Applescript 就可以了。

【问题讨论】:

    标签: macos command-line applescript


    【解决方案1】:

    还有另一种优雅的方法可以在不知道确切名称的情况下卸载所有外部硬盘驱动器:

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

    要忽略网络安装和光盘,请使用:

    osascript -e 'tell application "Finder" to eject (every disk whose ejectable is true and local volume is true and free space is not equal to 0)'
    

    【讨论】:

    • 这可能是最正确的方法,尽管语法很可怕。
    【解决方案2】:

    在终端尝试:

    • umount -a (通过 getfsent(3) 描述的所有文件系统都已卸载。)
    • umount -A (所有当前挂载的文件系统,除了根卸载。)

    更多信息请见man umount

    更新:

    好像你也可以用这个:

    diskutil unmountDisk /dev/disk*
    

    虽然没有测试它。如果不起作用,请尝试使用“unmount”而不是“unmountDisk”。

    哦,我还找到了 eject 参数(而不是 unmountDisk)。这可能也很有趣。

    更新 2:

    diskutil eject /dev/* 似乎是您正在寻找的东西(参见 cmets)。

    【讨论】:

    • 为什么不呢?有任何错误信息吗?如果是这样,请将它们张贴在这里。你也试过“-A”选项(大写A)。
    • 我尝试了 umount -a,然后打开了一个查找器窗口,但仅此而已。今晚当我回到外置硬盘驱动器所在的位置时,我将不得不尝试其他命令。
    • diskutil eject 也停止旋转外部硬盘。 diskutil unmountDisk 保持旋转。
    【解决方案3】:

    我发现这适用于弹出所有 dmg 和物理硬盘驱动器:

    find /dev -name "disk[1-9]" -exec diskutil eject {} \;
    

    【讨论】:

      【解决方案4】:

      我是这样做的:

      df | grep Volumes | awk '{ print $1 }' | while read disk; do diskutil unmount "$disk"; done
      

      【讨论】:

        【解决方案5】:

        您也可以使用diskutil eject /dev/disk2 或您想要弹出的任何设备号。这对我有用。

        【讨论】:

          猜你喜欢
          • 2014-10-29
          • 2013-09-12
          • 1970-01-01
          • 2011-02-09
          • 1970-01-01
          • 1970-01-01
          • 2012-08-07
          • 1970-01-01
          • 2011-10-12
          相关资源
          最近更新 更多