Portál AbcLinuxu, 14. června 2025 05:02

Jak zjistím, který program pracuje s diskem?

Pokud chcete odpojit diskový oddíl, ale dostáváte chybové hlášení, že je zaneprázdněn, je tomu tak proto, že s ním nějaký program právě pracuje.

Ke zjištění o které programy jde můžete využít nástroje fuser nebo lsof.

Máme připojený usb flash disk (zařízení /dev/sda1) do adresáře /flash. Pokud se pokusíme zařízení odpojit, dostaneme chybovou hlášku:

# umount /flash
umount: /flash: device is busy
umount: /flash: device is busy

Pro zjištění programu, který zařízení používá můžeme využít příkaz fuser.

# fuser /flash
/flash:               9369c

S adresářem pracuje program s PID 9369. Pro zjištění podrobností lze použít příkaz ps.

# ps -ax |grep 9369
 9369 pts/3    Ss+    0:00 bash

Se zařízením pracuje program bash. Můžeme ho tedy ukončit. Buďto ukončíme program obvyklým způsobem, nebo použijeme příkaz kill.

# kill 9369

Konkrétně bash ale signál SIGTERM, který posílá příkaz kill standardně, ignoruje. K ukončení je v tomoto případě třeba poslat signál SIGHUP, což zajistí parametr -1:

# kill -1 9369

Nyní je možné zařízení odpojit.

Případně je možné použít přímo příkaz fuser, který zašle blokujícímu procesu SIGKILL (pozor jedná se o velmi nešetrný způsob ukončení programu - například nedojde k uložení dat).

# fuser -k /flash

Jistí to parametr -i, který se vás (pokud je spolu s -k, jinak nemá význam) nejdříve zeptá.

# fuser -ik /flash

Dokument vytvořil: Leoš Literák, 27.7.2005 09:51 | Poslední úprava: Marble, 22.2.2007 16:32 | Další přispěvatelé: David Watzke, Michal Vyskočil | Historie změn | Zobrazeno: 1709×

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.