По 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. Дальше можно либо выйти из процессов, либо их убить. В итоге внешний диск можно нормально размонтировать.





