Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!
Zadejte Vaši e-mailovou adresu:
Kamarád fotí rád?
Přihlas ho k odběru fotomagazínu!
Zadejte e-mailovou adresu kamaráda:
Software
A jak to je se soubory?
6. března 2003, 00.00 | V poslední řadě dílů se bavíme o procesech a o "zdrojích", jež využívají: řekli jsme si něco o využití procesoru a paměti, a nyní se podíváme na soubory. Především se budeme věnovat příkazu lsof ("LiSt Open Files").
V poslední řadě dílů se bavíme o procesech a o "zdrojích", jež využívají: řekli jsme si něco o využití procesoru a paměti, a nyní se podíváme na soubory. Především se budeme věnovat příkazu lsof ("LiSt Open Files").
Nejen administrátor, ale dokonce i docela obyčejný uživatel systému nezřídka potřebuje zjistit, který z procesů udržuje otevřený který soubor: v Mac OS X bude asi nejčastějším případem situace, kdy nemůžeme vysunout výměnný disk, protože nějaký proces si ještě pořád udržuje otevřený některý z jeho souborů.
Příkaz lsof toho ovšem dokáže ještě mnohem víc: ve skutečnosti vlastně nezobrazuje otevřené soubory, ale komunikační kanály, ať již jde o komunikaci "s obsahem nějakého souboru na disku", tj. o klasický soubor, nebo "s adresáři a složkami", tj. o otevřenou složku, nebo o síťovou komunikaci mezi procesy (sockety apod.). Příkaz lsof tedy poslouží velmi dobře i při práci se sítí — celkem typický případ jeho využití je hledáme-li proces, který "zavinil" připojení k Internetu při využití tzv. dial-on-demand.
V několika dalších dílech si možnosti a argumenty příkazu lsof ukážeme podrobně; pro začátek se podíváme na jeho základní formát. Ten je velice jednoduchý:
5 ~> lsof
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
ATSServer 176 ocs cwd VDIR 14,12 4992 2 / (/dev/disk1s8)
...
Window 180 ocs 2u VCHR 3,2 0t0 36354436 /dev/null
Window 180 ocs 3u unix 0x0252a8d4 0t0 ->0x0226b564
loginwind 375 ocs cwd VDIR 14,12 3200 82594 /Users/ocs
...
loginwind 375 ocs 8w VREG 14,12 219473 577920 /private/var/tmp/console.log
...
telnet 499 ocs 3u inet 0x02a0bcfc 0t0 TCP 193.85.69.5:49196->cisco
...
Project 558 ocs 3u inet 0x02a0a4cc 0t0 TCP *:8547 (LISTEN)
...
lsof 4567 ocs 3r VCHR 3,0 0t0 36354692 /dev/mem
lsof 4567 ocs 4r VCHR 3,1 0t47391968 36354564 /dev/kmem
lsof 4567 ocs 5r VREG 14,12 3728752 212984 /mach_kernel
6 ~>
Pole COMMAND, PID a USER jsou nám zřejmá už z povídání o procesech. TYPE je prostě typ otevřeného kanálu, FD o něm přináší bližší informace, DEVICE jsou konkrétní čísla zařízení, na kterém je soubor (je-li to soubor) uložen. Pokud je to možné, udává SIZE/OFF//T velikost souboru, a NODE jednoznačné číslo souboru. Konečně NAME je jednoduše čitelný popis kanálu.
Vidíme tak např. že Window (Server) používá "černou díru" /dev/null, že telnet a Project (Builder) mají po jednom otevřeném TCP kanálu, nebo že sám lsof zjišťuje své informace (mimo jiné) čtením paměti a paměti jádra ze zařízení /dev/mem a /dev/kmem, a zkoumáním jádra systému v /mach_kernel.
Obsah seriálu (více o seriálu):
- Obcování s ďáblem
- Obcování s ďáblem 2 - základy
- Obcování s ďáblem 3 - Práce se soubory
- Obcování s ďáblem 4 - Další práce se soubory
- Obcování s ďáblem 5 - Stále soubory, hlavně linky
- Obcování s ďáblem 6: Pár zbývajících drobností
- Obcování s ďáblem 7: Samá voda, přihořívá, hoří!
- Obcování s ďáblem 8: Jak se do shellu volá, tak se program ozývá
- Obcování s ďáblem 9: Nové finty na programy
- Obcování s ďáblem 10: Do fronty, pánové, do fronty!
- Obcování s ďáblem 11: Standardní vstup a výstup
- Obcování s ďáblem 13: Další triky
- Obcování s ďáblem 14: Vyšší škola hledání souborů
- Obcování s ďáblem 15: Příkaz find stokrát jinak
- Obcování s ďáblem 16: Co se ještě dá uvařit z příkazu find
- Obcování s ďáblem 17: Regulární výrazy
- Obcování s ďáblem 18: Speciální regulární výrazy
- Obcování s ďáblem 19: Skládání regulárních výrazů
- Obcování s ďáblem 20: Regulární výrazy se zpětnými odkazy
- Obcování s ďáblem 21:K čemu je dobrý grep...
- Zázraky ihned, nemožné na počkání: sed
- Obcování s ďáblem - další finty s příkazem sed
- Rozsáhlejší příklad se sedem
- Obcování s ďáblem: Další kouzla, aneb awk
- Awk a proměnné
- Obcování s ďáblem 27: Awk a výrazy
- Obcování s ďáblem: Awk a funkce
- Awk a příkazy
- Co je to vlastně "uživatel"?
- Vlastnictví objektů
- Přístupová práva
- Vlastník, skupina, ostatní...
- Jak je to se skupinami?
- Skupiny a uživatelé
- Scripty
- Komentáře, a volba shellu
- Pro skript může být shell cokoli!
- Shellové skripty a argumenty
- Skripty a proměnné: aritmetika
- Proměnné shellu, "dědění" hodnot
- Práce s proměnnými
- Práce se jmény souborů
- Pole hodnot
- Další triky kolem polí...
- Standardní proměnné shellu
- Základní příkazy pro skripty
- Příkaz if
- Speciální podmínkové příkazy
- Podmínky pro práci se soubory
- Jednoduchý cyklus
- Příkaz for a pomocné příkazy break a continue
- Příkaz case
- Příkazy exit a select
- Rejstřík a přehled
- Procesy
- Informace o procesech
- Další klíčová slova pro příkaz ps
- Příkaz ps: několik praktických přepínačů
- A k čemu že je "ps" dobré?
- Copak procesor, s pamětí je to horší
- Virtuální paměť
- A ještě jednou virtuální paměť
- Zpět k příkazu ps
- Skutečný žrout paměti
- Ještě jednou top
- Doplněk k topu: vm_stat
- Co to tedy všechno znamená?
- Nevychází nám dal a má dáti?
- Kam se stránky ukládají?
- Změna odkládacího disku
- Změna odkládacího disku / fstab
- Poslední poznámka k fstab
- A jak to je se soubory?
- Co vlastně příkaz lsof vypisuje?
- Příkaz lsof a obsah sloupce NAME
- SIPS - Terminál není jen pro nadšence UNIXu
- Tak nám zabili NetInfo, paní Müllerová