По shell сделаю перерыв после этой заметки.

Бывает, что внешний диск не хочет безопасно отключаться из-за того, что какой-то процесс работает с файлами на нём. Обычно система рапортует, из-за какой программы это происходит, но иногда нужно знать, какой именно файл используется.

На помощь приходит штатная утилита lsof.

Допустим, не отключается диск "Time Machine Home". Смотрим, куда он подмонтирован:

ole-mac:~ ctrld$ mount
/dev/disk0s2 on / (hfs, local, journaled)
devfs on /dev (devfs, local, nobrowse)
map -hosts on /net (autofs, nosuid, automounted, nobrowse)
map auto_home on /home (autofs, automounted, nobrowse)
/dev/disk1s2 on /Volumes/ctrld (hfs, local, nodev, nosuid, journaled, noowners, mounted by ctrld)
/dev/disk2s2 on /Volumes/Time Machine Home (hfs, local, journaled) 

Определяем, какие файлы используются в этом каталоге, и какими именно процессами:

ole-mac:~ ctrld$ lsof "/Volumes/Time Machine Home"
COMMAND  PID  USER   FD   TYPE DEVICE SIZE/OFF    NODE NAME
bash    2877 ctrld  cwd    DIR   14,8      442       2 /Volumes/Time Machine Home
vim     2950 ctrld  cwd    DIR   14,8      442       2 /Volumes/Time Machine Home
vim     2950 ctrld    3u   REG   14,8    12288 3305869 /Volumes/Time Machine Home/.1.txt.swp
vim     2955 ctrld    3u   REG   14,8    12288 3305872 /Volumes/Time Machine Home/.Trashes/.3.txt.swp 

Видим, что в интересующий нас каталог перешли ('cwd' - current working directory) два процесса (bash/2877 и vim/2950), и два vim редактируют файлы 1.txt и .Trashes/3.txt. Дальше можно либо выйти из процессов, либо их убить. В итоге внешний диск можно нормально размонтировать.