lsof and fuser
Diyelim ki bir USB sürücüsü taktınız ve bazı dosyalar üzerinde çalıştınız, işiniz bittikten sonra USB cihazını unmount etmeye çalıştığınızda “Device or Resource Busy” hatası alıyorsunuz. USB sürücüsündeki hangi dosyaların hâlâ kullanımda olduğunu nasıl bulursunuz? Bunun için kullanabileceğiniz iki araç vardır:
lsof
Dosyaların sadece metin dosyaları, görüntüler vb. olmadığını, sistemdeki her şey—diskler, pipe’lar, network socket’ler, cihazlar vb.—olduğunu unutmayın. Bir process tarafından nelerin kullanımda olduğunu görmek için lsof komutunu (“list open files”ın kısaltması) kullanabilirsiniz, bu size tüm açık dosyaların ve bunlarla ilişkili process’in bir listesini gösterecektir.
pete@icebox:~$ lsof .
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
lxsession 1491 pete cwd DIR 8,6 4096 131 .
update-no 1796 pete cwd DIR 8,6 4096 131 .
nm-applet 1804 pete cwd DIR 8,6 4096 131 .
indicator 1809 pete cwd DIR 8,6 4096 131 .
xterm 2205 pete cwd DIR 8,6 4096 131 .
bash 2207 pete cwd DIR 8,6 4096 131 .
lsof 5914 pete cwd DIR 8,6 4096 131 .
lsof 5915 pete cwd DIR 8,6 4096 131 .
Şimdi hangi process’lerin cihazı/dosyayı açık tuttuğunu görebiliyorum. USB örneğimizde, bu process’leri öldürerek bu inatçı sürücüyü unmount edebiliriz.
fuser
Bir process’i takip etmenin bir diğer yolu fuser komutudur (“file user”ın kısaltması), bu komut dosyayı kullanan process veya file user hakkında bilgi gösterecektir.
pete@icebox:~$ fuser -v .
USER PID ACCESS COMMAND
/home/pete: pete 1491 ..c.. lxsession
pete 1796 ..c.. update-notifier
pete 1804 ..c.. nm-applet
pete 1809 ..c.. indicator-power
pete 2205 ..c.. xterm
pete 2207 ..c.. bash
/home/pete dizinimizi şu anda hangi process’lerin kullandığını görebiliyoruz. lsof ve fuser araçları çok benzerdir, bu araçlara aşina olun ve bir dosya veya process’i takip etmeniz gerektiğinde bir dahaki sefere kullanmayı deneyin.
Last updated