我正在尝试编写一个shell脚本来卸载/挂载OS X上的所有外部驱动器。
我的磁盘列表如下:
$ diskutil list
/dev/disk0
#: TYPE NAME SIZE IDENTIFIER
0: GUID_partition_scheme *500.3 GB disk0
1: EFI EFI 209.7 MB disk0s1
2: Apple_CoreStorage 499.4 GB disk0s2
3: Apple_Boot Recovery HD 650.0 MB disk0s3
/dev/disk1
#: TYPE NAME SIZE IDENTIFIER
0: Apple_HFS Macintosh HD *496.3 GB disk1
Logical Volume on disk0s2
AE949253-803C-49DC-93EA-7DFC74C2EAA2
Unencrypted
/dev/disk2
#: TYPE NAME SIZE IDENTIFIER
0: GUID_partition_scheme *1.0 TB disk2
1: EFI EFI 209.7 MB disk2s1
2: Apple_HFS Time Machine 999.9 GB disk2s2
/dev/disk3
#: TYPE NAME SIZE IDENTIFIER
0: GUID_partition_scheme *750.2 GB disk3
1: EFI EFI 209.7 MB disk3s1
2: Microsoft Basic Data USB HD 4 749.9 GB disk3s2
/dev/disk4
#: TYPE NAME SIZE IDENTIFIER
0: GUID_partition_scheme *500.1 GB disk4
1: EFI EFI 209.7 MB disk4s1
2: Microsoft Basic Data Backup 499.9 GB disk4s2
/dev/disk5
#: TYPE NAME SIZE IDENTIFIER
0: GUID_partition_scheme *1.0 TB disk5
1: EFI EFI 209.7 MB disk5s1
2: Apple_HFS USB HD 1 999.9 GB disk5s2
/dev/disk6
#: TYPE NAME SIZE IDENTIFIER
0: GUID_partition_scheme *4.0 TB disk6
1: EFI EFI 209.7 MB disk6s1
2: Apple_HFS USB HD 2 4.0 TB disk6s2
/dev/disk8
#: TYPE NAME SIZE IDENTIFIER
0: Apple_partition_scheme *122.9 GB disk8
1: Apple_partition_map 32.3 KB disk8s1
2: Apple_Driver43 28.7 KB disk8s2
3: Apple_Driver43 28.7 KB disk8s3
4: Apple_Driver_ATA 28.7 KB disk8s4
5: Apple_Driver_ATA 28.7 KB disk8s5
6: Apple_FWDriver 262.1 KB disk8s6
7: Apple_Driver_IOKit 262.1 KB disk8s7
8: Apple_Patches 262.1 KB disk8s8
9: Apple_HFS Windows 122.9 GB disk8s9
所以,我写了一个像:
这样的剧本#!/bin/sh
diskutil list | grep -oE 'disk[0-9]s2' | while read i
do
Prtl=`diskutil info ${i} | grep Protocol | cut -d ' ' -f 21`
if [ ${Prtl} = USB ]; then
diskutil unmount ${i}
fi
done
我想知道以下内容:
1.有没有办法在不使用diskutil信息的情况下识别外部驱动器?原因是diskutil信息启动睡眠驱动器,我的脚本很慢。
2.还有更聪明的方法吗?我用谷歌搜索了这么多,但我找不到我想要的方式。希望能帮助我...
答案 0 :(得分:2)
无法解决硬盘加速延迟的问题,但是您也可以这样写:
find /dev -name "disk[1-9]" -exec diskutil eject {} \;
或者,此脚本对我来说运行良好:
osascript -e 'tell application "Finder" to eject (every disk whose ejectable is true)'
答案 1 :(得分:1)
您可以尝试使用不同数据类型的system_profiler
。我认为它不会唤醒驱动器。 system_profiler SPUSBDataType
将为您提供所有USB设备及其挂载点,system_profiler SPFireWireDataType
对FireWire设备也是如此。 system_profiler -listDataTypes
会为您提供所有数据类型。解析出挂载点后,可以卸载这些驱动器。
在不同的系统中,它不是完全可移植到只有USB然后是FireWire然后是Thunderbolt,因为可能有不同的连接。要尝试所有内容,您可以执行system_profiler
(列出所有数据),然后搜索“挂载点:”之后的任何内容,并卸载之后的任何内容。
这是为USB驱动器打印的数据示例:
1394A/USB2.0/eSATA combo drive:
Product ID: 0x000a
Vendor ID: 0x0928 (Oxford Semiconductor Ltd.)
Version: 0.00
Serial Number: 2009100700000936
Speed: Up to 480 Mb/sec
Manufacturer: PI-208
Location ID: 0xfd500000 / 3
Current Available (mA): 500
Current Required (mA): 0
Capacity: 1 TB (1,000,204,886,016 bytes)
Removable Media: Yes
Detachable Drive: Yes
BSD Name: disk5
Partition Map Type: GPT (GUID Partition Table)
S.M.A.R.T. status: Not Supported
Volumes:
disk5s1:
Capacity: 209.7 MB (209,715,200 bytes)
BSD Name: disk5s1
Content: EFI
Clone:
Capacity: 650.2 GB (650,200,002,560 bytes)
Available: 101.49 GB (101,489,717,248 bytes)
Writable: Yes
File System: Journaled HFS+
BSD Name: disk5s2
Mount Point: /Volumes/Clone
Content: Apple_HFS
Volume UUID: F42D6E05-C72C-386A-86AD-635A818E1FE3
LocalBackup:
Capacity: 339.53 GB (339,526,688,768 bytes)
Available: 53.88 GB (53,881,970,688 bytes)
Writable: Yes
File System: Journaled HFS+
BSD Name: disk5s3
Mount Point: /Volumes/LocalBackup
Content: Apple_HFS
Volume UUID: 04974080-CB76-3CC3-BC37-274241D1BC0F
Yosemite:
Capacity: 9.35 GB (9,350,000,640 bytes)
Available: 9.31 GB (9,311,920,128 bytes)
Writable: Yes
File System: Journaled HFS+
BSD Name: disk5s4
Mount Point: /Volumes/Yosemite
Content: Apple_HFS
Volume UUID: AE809679-3C2A-3BE4-950F-551663791CE3