Úvod do Lsof

V systéme Linux sa mnohé objekty považujú za súbor bez ohľadu na to, či je objektom skutočne súbor, zariadenie, adresár alebo soket. Vypísanie súboru je jednoduché, je na to zabudovaný shell ls. Čo ak však používateľ chce vidieť, ktoré súbory sú momentálne otvorené procesom webového servera? Alebo ak chcel tento používateľ zistiť, ktoré súbory sú otvorené v určitom adresári? To je miesto, kde lsofprichádza do hry. Predstavte si to lsofako lss pridaním „otvorených súborov“.

Upozorňujeme, že zatiaľ čo BSD majú pre túto úlohu inú pomôcku fstat, niekoľko ďalších verzií Unixu (napríklad Solaris) má tiež lsof. Možnosti a príznaky sú na iných platformách odlišné, rovnako ako aj vzhľad výstupu, ale vo všeobecnosti by pre ne mali platiť aj poznatky z tohto článku.

Najprv sa pozrime na formát lsofvýstupu a na to, ako sa má čítať. Zvyčajný výstup lsofbez akýchkoľvek parametrov by vyzeral nasledovne. Toto bolo upravené kvôli čitateľnosti.

COMMAND    PID  TID       USER   FD      TYPE             DEVICE  SIZE/OFF       NODE NAME
init         1            root  cwd       DIR              254,1      4096          2 /
init         1            root  rtd       DIR              254,1      4096          2 /
init         1            root  txt       REG              254,1     36992    7077928 /sbin/init
init         1            root  mem       REG              254,1     14768    7340043 /lib/x86_64-linux-gnu/libdl-2.13.so
init         1            root  mem       REG              254,1   1603600    7340040 /lib/x86_64-linux-gnu/libc-2.13.so
init         1            root  mem       REG              254,1    126232    7340078 /lib/x86_64-linux-gnu/libselinux.so.1
init         1            root  mem       REG              254,1    261184    7340083 /lib/x86_64-linux-gnu/libsepol.so.1
init         1            root  mem       REG              254,1    136936    7340037 /lib/x86_64-linux-gnu/ld-2.13.so
init         1            root   10u     FIFO               0,14       0t0       4781 /run/initctl

Tieto stĺpce znamenajú:

  • COMMAND – Proces, do ktorého patrí otvorený súbor, v tomto príklade všetko súvisí s init.
  • PID – Identifikačné číslo procesu daného procesu.
  • USER – Používateľ, pod ktorým proces beží. Pre init, je to takmer vždy root.
  • FD - deskriptor súboru, najbežnejší je:
    • cwd- Aktuálny pracovný adresár (môžete si všimnúť podobnosť s pwdpríkazom, ktorý vypíše aktuálny pracovný adresár).
    • rtd - Koreňový adresár procesu.
    • txt- A text file, môže to znamenať buď konfiguračný súbor súvisiaci s procesom, alebo „zdrojový kód“ súvisiaci (alebo patriaci k) procesu.
    • mem - Takzvaný "súbor mapovaný v pamäti", to znamená segment virtuálnej pamäte (čítaj: RAM), ktorý bol priradený k súboru.
    • Číslo - číslo predstavuje skutočný deskriptor súboru, znak za číslom je režim, v ktorom sa súbor otvára:
    • r - Čítať.
    • w - Napíšte.
    • u - Čítaj a píš.
  • TYP – určuje skutočný typ súboru, najbežnejšie sú:
    • REG - Bežný súbor.
    • DIR - Adresár.
    • FIFO - Prvý dnu prvý von.
  • DEVICE – hlavné a vedľajšie číslo zariadenia, v ktorom je súbor uložený.
  • SIZE – Veľkosť súboru v bajtoch.
  • NODE – Číslo inódu súboru.
  • NAME – názov súboru.

Nateraz to môže byť trochu ohromujúce, ale ak s tým budete pracovať lsofniekoľkokrát, rýchlo sa vám to vryje do mozgu.

Ako už bolo spomenuté vyššie, výstup lsoftu bol skrátený. Bez akýchkoľvek argumentov alebo filtrov lsofvytvára stovky riadkov výstupu, ktorý vás nechá len zmätený.

Na vyriešenie tohto problému existujú dva základné prístupy:

  • lsofNa zúženie výsledkov použite jednu alebo viacero možností príkazového riadka.
  • Výstup preveďte napríklad cez grep.

Aj keď posledná možnosť môže znieť pohodlnejšie, pretože si nebudete musieť pamätať možnosti lsofpríkazového riadka, vo všeobecnosti nie je taká flexibilná a efektívna, takže sa budeme držať prvej.

Predstavme si, že chcete otvoriť súbor pomocou svojho obľúbeného textového editora a textový editor vám povie, že ho možno otvoriť iba v režime iba na čítanie, pretože k nemu už pristupuje iný program. lsofvám pomôže zistiť, kto je páchateľ:

lsof /path/to/your/file

Výsledkom bude výstup podobný tomuto:

COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF    NODE NAME
vim 2679 root    5w   REG  254,1   121525 6035622 /root/lsof.txt

Zrejme ste zabudli zavrieť a staršiu reláciu! Veľmi podobný problém nastane, keď sa pokúsite odpojiť zdieľanie NFS a umountpovie vám, že to nejde, pretože niečo stále pristupuje k pripojenému priečinku. Opäť lsofvám môže pomôcť pri identifikácii vinníka:

lsof +D /path/to/your/directory/

Všimnite si koncovú lomku, tá je dôležitá. V opačnom prípade sa lsofbude predpokladať, že máte na mysli bežný súbor. Nenechajte sa zmiasť +pred vlajkou - lsofmá toľko možností príkazového riadku, ktoré potrebuje +okrem bežnejších -. Výstup by vyzeral takto:

COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF      NODE NAME
mocp    5637  music    4r   REG   0,19 10147719 102367344 /home/Music/RMS_GNU_SONG.ogg

To znamená, že proces mocps PID 5637patriaci používateľovi musicotvoril súbor s názvom RMS_GNU_SONG.ogg. Avšak aj po zatvorení tohto procesu stále existuje problém - zväzok NFS nemožno odpojiť.

lsof-cpríznak, ktorý zobrazuje otvorené súbory s ľubovoľným názvom procesu.

lsof -c mocp

Výsledkom by bol výstup, ktorý vyzerá takto:

mocp    9383  music    4r   REG   0,19 10147719 102367344 /home/Music/ANOTHER_RMS_GNU_SONG.ogg

V tomto príklade je iná inštancia mocpspustenia, ktorá vám bráni odpojiť zdieľanie. Po vypnutí tohto procesu sa chcete uistiť, že používateľ musicnemá otvorené žiadne ďalšie potenciálne problematické súbory. lsof-upríznak pre zobrazenie súborov otvorených konkrétnym používateľom. Pamätajte, že súbor nie je vždy len obyčajný súbor na vašom pevnom disku!

lsof -u music

Môžete tiež odovzdať niekoľko používateľov oddelených čiarkami:

lsof -u music,moremusic

Dôležitá poznámka o predvolené správanie lsof: výsledky sú OR na báze, čo znamená, že uvidíte výsledky otvorenie súboru pomocou postupov, ktoré sú vo vlastníctve buď používateľ music, alebo užívateľ moremusic. Ak by ste chceli vidieť výsledky zodpovedajúce procesom, ktoré vlastnia obaja používatelia, museli by ste zadať príznak -a:

lsof -au music, moremusic

Keďže obaja používatelia sú v skupine musicusers, môžete tiež zobraziť zoznam súborov podľa skupiny:

lsof -g musicusers

Môžete tiež kombinovať príznaky príkazového riadku:

lsof -u music,moremusic -c mocp

or

lsof -u ^music +D /home/Music

V poslednom riadku sme pridali ďalší špeciálny príznak - ^, čo znamená logické NOT . Ak je výstup po spustení tohto príkazu prázdny, odpojenie bude s najväčšou pravdepodobnosťou úspešné.

V predchádzajúcich príkladoch sme sa väčšinou pozerali na bežné súbory. Ako je to so zásuvkami a sieťovými pripojeniami?

Zoznam všetkých aktuálnych sieťových pripojení lsof-ipríznak:

lsof -i

Výstup vyzerá podobne ako to, čo sme doteraz videli...

COMMAND    PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
owncloud  3509  myuser   25u  IPv4  44946      0t0  TCP strix.local:34217->myserver.vultr.com:https (ESTABLISHED)
firefox   3612  myuser   82u  IPv4  49663      0t0  TCP strix.local:43897->we-in-f100.1e100.net:https (ESTABLISHED)
ssh       3784  myuser    3u  IPv4  10437      0t0  TCP strix.local:51416->someserver.in:ssh (ESTABLISHED)
wget      4140  myuser    3w  IPv4  45586      0t0  TCP strix.local:54460->media.ccc.de:http (CLOSE_WAIT)

... až na jeden rozdiel: namiesto názvov súborov alebo adresárov sa v stĺpci NAMEteraz zobrazujú informácie o pripojení. Každé spojenie pozostáva z nasledujúcich častí:

  • Protokol.
  • Miestny názov hostiteľa.
  • Zdrojový port pripojenia.
  • Názov DNS cieľa.
  • Cieľový prístav.
  • Stav pripojenia.

Ako pri mnohých iných nástrojoch, aj tu sa môžete odhlásiť z rozlišovania názvov DNS a portov ( -na -P). Príznak -imá ďalšie parametre. Môžete určiť, či má alebo nemá zobrazovať tcp, udpalebo icmpspojenie alebo niektoré porty:

lsof -i :25
or
lsof -i :smtp

Parametre sa opäť dajú kombinovať. Nasledujúci príklad...

lsof -i tcp:80

... vám ukáže iba TCP spojenia využívajúce port 80. Môžete to skombinovať aj s možnosťami, ktoré už poznáte z „klasických“ súborov:

lsof -a -u httpd -i tcp

Toto vám ukáže všetky TCP spojenia otvorené používateľom httpd. Všimnite si -apríznak, ktorý mení predvolené správanie lsof(ako už bolo spomenuté). Rovnako ako u väčšiny nástrojov príkazového riadku môžete ísť veľmi hlboko. V nasledujúcom texte sa zobrazia iba pripojenia TCP, ktorých stav je „ZATVORENÉ“:

lsof -i -s TCP:ESTABLISHED

V tomto bode by ste mali mať základné znalosti o tom lsof, ako to funguje, spolu s niektorými bežnými prípadmi použitia. Ďalšie informácie nájdete na manuálovej stránke lsofvášho systému.


Leave a Comment

Install Plesk on CentOS 7

Install Plesk on CentOS 7

Using a Different System? Plesk is a proprietary web host control panel that allows users to administer their personal and/or clients websites, databases

Install Lets Encrypt SSL on One-Click WordPress App

Install Lets Encrypt SSL on One-Click WordPress App

Introduction Lets Encrypt is a certificate authority service that offers free TLS/SSL certificates. The process of installation is simplified by Certbot,

Ako nastaviť klasický server Tekkit na Ubuntu 16.10

Ako nastaviť klasický server Tekkit na Ubuntu 16.10

Používate iný systém? Čo je Tekkit Classic? Tekkit Classic je modpack pre hru, ktorú každý pozná a miluje; Minecraft. Obsahuje niektoré z ver

Creating a Jekyll Blog on Ubuntu 16.04

Creating a Jekyll Blog on Ubuntu 16.04

Using a Different System? Jekyll is a great alternative to WordPress for blogging or sharing content. It doesnt require any databases and it is very easy i

Ako nastaviť bezobslužné aktualizácie na Debian 9 (Stretch)

Ako nastaviť bezobslužné aktualizácie na Debian 9 (Stretch)

Používate iný systém? Ak si zakúpite server Debian, mali by ste mať vždy najnovšie bezpečnostné záplaty a aktualizácie, či už spíte alebo nie

Ako nainštalovať a nakonfigurovať PHP 7.0 alebo PHP 7.1 na Ubuntu 16.04

Ako nainštalovať a nakonfigurovať PHP 7.0 alebo PHP 7.1 na Ubuntu 16.04

PHP a súvisiace balíky sú najčastejšie používané komponenty pri nasadzovaní webového servera. V tomto článku sa naučíme, ako nastaviť PHP 7.0 alebo PHP 7.1 o

Ako nainštalovať Squid Proxy na CentOS

Ako nainštalovať Squid Proxy na CentOS

Squid je populárny bezplatný linuxový program, ktorý vám umožňuje vytvoriť webový proxy server na presmerovanie. V tejto príručke uvidíte, ako nainštalovať Squid na CentOS, aby vás zmenil

Ako nainštalovať Lighttpd (LLMP Stack) na CentOS 6

Ako nainštalovať Lighttpd (LLMP Stack) na CentOS 6

Úvod Lighttpd je fork Apache, ktorého cieľom je byť oveľa menej náročný na zdroje. Je ľahký, odtiaľ jeho názov, a jeho použitie je celkom jednoduché. Installin

Tri bezplatné ovládacie panely servera (rýchla inštalácia)

Tri bezplatné ovládacie panely servera (rýchla inštalácia)

1. Virtualmin/Webmin Virtualmin je výkonný a flexibilný ovládací panel webhostingu pre systémy Linux a UNIX založený na známej webovej základni Open Source

Nastavenie aplikácie Yii na Ubuntu 14.04

Nastavenie aplikácie Yii na Ubuntu 14.04

Yii je rámec PHP, ktorý vám umožňuje rýchlejšie a jednoduchšie vyvíjať aplikácie. Inštalácia Yii na Ubuntu je jednoduchá, ako sa presne dozviete

Používanie obrazovky na Ubuntu 14.04

Používanie obrazovky na Ubuntu 14.04

Screen je aplikácia, ktorá umožňuje viacnásobné použitie terminálových relácií v rámci jedného okna. To vám umožňuje simulovať viacero okien terminálu, kde je to možné

Nastavte si svoj vlastný DNS server na Debian/Ubuntu

Nastavte si svoj vlastný DNS server na Debian/Ubuntu

Tento tutoriál vysvetľuje, ako nastaviť server DNS pomocou Bind9 na Debiane alebo Ubuntu. V celom článku podľa toho nahraďte názov vašej-domény.com. Pri th

Používanie Logrotate na správu protokolových súborov

Používanie Logrotate na správu protokolových súborov

Úvod Logrotate je nástroj pre Linux, ktorý zjednodušuje správu protokolových súborov. Zvyčajne beží raz denne prostredníctvom úlohy cron a spravuje základňu protokolov

Konfigurácia statickej siete a IPv6 na CentOS 7

Konfigurácia statickej siete a IPv6 na CentOS 7

VULTR nedávno vykonal zmeny na ich konci a všetko by teraz malo fungovať dobre po vybalení so zapnutým NetworkManagerom. Ak chcete deaktivovať

Úprava Icinga2 na použitie modelu Master/Client na CentOS 6 alebo CentOS 7

Úprava Icinga2 na použitie modelu Master/Client na CentOS 6 alebo CentOS 7

Icinga2 je výkonný monitorovací systém a pri použití v modeli master-client môže nahradiť potrebu monitorovacích kontrol založených na NRPE. Hlavný klient

Nastavte Red5 Media Server na Ubuntu 16.04

Nastavte Red5 Media Server na Ubuntu 16.04

Používate iný systém? Red5 je mediálny server s otvoreným zdrojom implementovaný v jazyku Java, ktorý vám umožňuje spúšťať aplikácie Flash pre viacerých používateľov, ako napríklad živé vysielanie

Ako nainštalovať Apache Cassandra 3.11.x na Ubuntu 16.04 LTS

Ako nainštalovať Apache Cassandra 3.11.x na Ubuntu 16.04 LTS

Používate iný systém? Apache Cassandra je bezplatný a otvorený systém správy databáz NoSQL, ktorý je navrhnutý tak, aby poskytoval škálovateľnosť, vysokú

Ako nainštalovať Vanilla Forum na Ubuntu 16.04

Ako nainštalovať Vanilla Forum na Ubuntu 16.04

Používate iný systém? Vanilla forum je open source aplikácia fóra napísaná v PHP. Je plne prispôsobiteľný, ľahko použiteľný a podporuje externé

Ako nainštalovať Kanboard na Ubuntu 18.04 LTS

Ako nainštalovať Kanboard na Ubuntu 18.04 LTS

Používate iný systém? Úvod Kanboard je bezplatný a otvorený softvérový program na riadenie projektov, ktorý je navrhnutý tak, aby uľahčil a vizualizoval

Ako nainštalovať Kanboard na Debian 9

Ako nainštalovať Kanboard na Debian 9

Používate iný systém? Úvod Kanboard je bezplatný a otvorený softvérový program na riadenie projektov, ktorý je navrhnutý tak, aby uľahčil a vizualizoval

The Rise of Machines: Real World Applications of AI

The Rise of Machines: Real World Applications of AI

Umelá inteligencia nie je v budúcnosti, je tu priamo v súčasnosti V tomto blogu si prečítajte, ako aplikácie umelej inteligencie ovplyvnili rôzne sektory.

Útoky DDOS: Stručný prehľad

Útoky DDOS: Stručný prehľad

Ste aj vy obeťou DDOS útokov a máte zmätok ohľadom metód prevencie? Ak chcete vyriešiť svoje otázky, prečítajte si tento článok.

Zaujímalo vás niekedy, ako hackeri zarábajú peniaze?

Zaujímalo vás niekedy, ako hackeri zarábajú peniaze?

Možno ste už počuli, že hackeri zarábajú veľa peňazí, ale premýšľali ste niekedy nad tým, ako môžu zarábať také peniaze? poďme diskutovať.

Revolučné vynálezy od spoločnosti Google, ktoré vám uľahčia život.

Revolučné vynálezy od spoločnosti Google, ktoré vám uľahčia život.

Chcete vidieť revolučné vynálezy od Google a ako tieto vynálezy zmenili život každého dnešného človeka? Potom si prečítajte na blogu a pozrite si vynálezy spoločnosti Google.

Piatok Essential: Čo sa stalo s autami poháňanými AI?

Piatok Essential: Čo sa stalo s autami poháňanými AI?

Koncept samoriadených áut vyraziť na cesty s pomocou umelej inteligencie je snom, ktorý máme už nejaký čas. Ale napriek niekoľkým prísľubom ich nikde nevidno. Prečítajte si tento blog a dozviete sa viac…

Technologická singularita: vzdialená budúcnosť ľudskej civilizácie?

Technologická singularita: vzdialená budúcnosť ľudskej civilizácie?

Ako sa veda vyvíja rýchlym tempom a preberá veľa nášho úsilia, zvyšuje sa aj riziko, že sa vystavíme nevysvetliteľnej singularite. Prečítajte si, čo pre nás môže znamenať singularita.

Vývoj ukladania dát – Infografika

Vývoj ukladania dát – Infografika

Spôsoby ukladania údajov sa môžu vyvíjať už od zrodu údajov. Tento blog sa zaoberá vývojom ukladania údajov na základe infografiky.

Funkcionality vrstiev referenčnej architektúry veľkých dát

Funkcionality vrstiev referenčnej architektúry veľkých dát

Prečítajte si blog, aby ste čo najjednoduchším spôsobom spoznali rôzne vrstvy architektúry veľkých dát a ich funkcie.

6 úžasných výhod toho, že máme v živote inteligentné domáce zariadenia

6 úžasných výhod toho, že máme v živote inteligentné domáce zariadenia

V tomto digitálnom svete sa inteligentné domáce zariadenia stali kľúčovou súčasťou života. Tu je niekoľko úžasných výhod inteligentných domácich zariadení o tom, ako robia náš život, ktorý stojí za to žiť, a ktorý zjednodušujú.

Aktualizácia doplnku macOS Catalina 10.15.4 spôsobuje viac problémov, ako ich rieši

Aktualizácia doplnku macOS Catalina 10.15.4 spôsobuje viac problémov, ako ich rieši

Spoločnosť Apple nedávno vydala doplnkovú aktualizáciu macOS Catalina 10.15.4 na opravu problémov, ale zdá sa, že táto aktualizácia spôsobuje ďalšie problémy, ktoré vedú k blokovaniu počítačov Mac. Prečítajte si tento článok a dozviete sa viac