Potresti esserti imbattuto nel detto, Tutto è un file in Linux. Sebbene questo non sia del tutto vero, contiene una serie di verità.
Nei sistemi Linux e Unix, tutto è come un file. Ciò significa che alle risorse nel sistema Unix viene assegnato un descrittore di file, inclusi dispositivi di archiviazione, socket di rete, processi, ecc.
Un descrittore di file è un numero univoco che identifica un file e altri dispositivi di input/output. Descrive le risorse e come il kernel vi accede. Consideralo come un gateway per le risorse hardware di astrazione del kernel.
Sfortunatamente, il concetto di descrittori di file va oltre lo scopo di questo tutorial; considera il link fornito di seguito per iniziare a saperne di più:
https://en.wikipedia.org/wiki/File_descriptor
Ciò significa che i sistemi Unix e simili a Unix come Linux utilizzano pesantemente tali file. Come utente esperto di Linux, vedere i file aperti, il processo e gli utenti che li utilizzano è incredibilmente utile.
Questo tutorial si concentrerà sui modi per visualizzare i file aperti e su quale processo o utente è responsabile.
Pre-requisiti
Prima di iniziare, assicurati di avere:
- Un sistema Linux
- Utente con privilegi di root o sudo
Se hai questi, iniziamo:
Utilità LSOF
Creato da Victor A Abell, List open files, o lsof in breve, è un'utilità della riga di comando che ci consente di visualizzare i file aperti e i processi o gli utenti che li hanno aperti.
L'utility lsof è disponibile nelle principali distribuzioni Linux; tuttavia, potresti trovarlo non installato e quindi potrebbe essere necessario installarlo manualmente.
Come installare lsof su Debian/Ubuntu
Per installarlo su Debian, usa il comando:
sudo apt-get updatesudo apt-get installlsof-e
Come installare su REHL/CentOS
Per installare su REHL e CentOS, usa il comando:
sudoaggiornamento dnfsudodnfinstallarelsof
Come installare su Arch
Su Arch, chiama il gestore di pacchetti usando il comando:
sudopacman-Il suosudopacman-Slsof
Come installare su Fedora
Su Fedora, usa il comando:
sudo yum installalsofUna volta installata e aggiornata l'utility lsof, possiamo iniziare a utilizzarla.
Uso di base dell'uso
Per utilizzare lo strumento lsof, immetti il comando:
sudolsofUna volta eseguito il comando sopra, lsof scaricherà molte informazioni come mostrato di seguito:
L'output sopra mostra tutti i file aperti dai processi. L'output ha varie colonne, ognuna delle quali rappresenta informazioni specifiche sul file.
- La colonna COMANDO – mostra il nome del processo che sta utilizzando il file.
- PID – mostra l'identificatore di processo del processo che utilizza il file.
- Il TID – Mostra l'ID attività (thread) del processo.
- TASKCMD – Rappresenta il nome del comando dell'attività.
- UTENTE – Il titolare del processo.
- FD – Mostra il numero del descrittore di file. Questo è il modo in cui i processi utilizzano il file; le opzioni disponibili in questo output di colonna includono:
- cwd – directory di lavoro corrente.
- meme – file mappato in memoria
- pd – directory principale
- jld – directory della prigione
- ltx – testo della libreria condivisa
- rtd - root directory.
- testo – codice e dati del programma
- NS – file di traccia del kernel.
- err – Errore di informazioni sul descrittore di file
- mmp – Dispositivo mappato in memoria.
- GENERE – Mostra il tipo di nodo associato al file, come:
- Unix – per socket di dominio Unix.
- A TE – rappresenta la directory
- REG – che rappresenta il file normale
- CHR – rappresenta il file di caratteri speciali.
- COLLEGAMENTO – file di collegamento simbolico
- BLK – Blocca file speciale
- INET – Presa di dominio Internet
- FIFO – una named pipe (file First In First Out)
- TUBO – per tubi
E molti altri.
- DISPOSITIVI – Mostra i numeri dei dispositivi separati da virgole nell'ordine di file di caratteri speciali, blocco speciale, normale, directory e file NFS.
- TAGLIA/OFF – mostra la dimensione del file pr file offset in byte.
- NODO – mostra il numero di nodo del file locale, il tipo per il tipo di protocollo Internet, ecc.
- NOME – mostra il nome del punto di montaggio e fs su cui si trova il file.
Nota: Fare riferimento al manuale lsof per informazioni dettagliate sulle colonne.
Come mostrare i processi che hanno aperto un file
Lsof ci fornisce opzioni che ci aiutano a filtrare l'output per mostrare solo i processi che hanno aperto un file specifico.
Ad esempio, per vedere il file che ha aperto il file /bin/bash, usa il comando come:
sudolsof/sono/bashQuesto ti darà un output come mostrato di seguito:
COMANDO PID UTENTE TIPO FD DIMENSIONI DISPOSITIVO/NOME NODO NOksmtuned1025radice txt REG253,0 1150704 428303 /usr/sono/bash
bash 2968centos txt REG253,0 1150704 428303 /usr/sono/bash
bash 3075centos txt REG253,0 1150704 428303 /usr/sono/bash
Come mostrare i file aperti da un utente specifico
Possiamo anche filtrare l'output per mostrare i file aperti da un utente specifico. Lo facciamo usando il flag -u seguito dal nome utente come:
sudolsof-ucentinaiaQuesto ti darà un output come mostrato di seguito:
Come mostrare i file aperti da un processo specifico
Supponiamo di voler visualizzare tutti i file aperti da un processo specifico? Per questo, possiamo usare il PID del processo per filtrare l'output.
Ad esempio, il comando seguente mostra i file aperti da bash.
sudolsof-P 3075Questo ti darà solo i file aperti da systemd come mostrato:
Come mostrare i file aperti in una directory
Per aprire i file in una directory specifica, possiamo passare l'opzione +D seguita dal percorso della directory.
Ad esempio, elenca i file aperti nella directory /etc.
sudolsof +D/ecceteraDi seguito è riportato l'output per questo:
Come mostrare la connessione di rete
Poiché tutto in Linux è un file, possiamo ottenere i file di rete come file TCP o connessioni.
Possiamo usare il comando:
sudolsof-ioTCPQuesto ti darà le connessioni TCP nel sistema.
Puoi anche filtrare in base alla porta specifica utilizzando il comando mostrato di seguito:
sudolsof-io:22Questo ti darà l'output come mostrato di seguito:
Come mostrare continuamente i file
Lsof ci fornisce una modalità per eseguire il loop dell'output ogni pochi secondi. Ciò consente di monitorare continuamente i file aperti da un processo o da un utente.
Questa opzione, tuttavia, richiede di terminare il processo manualmente.
Ad esempio, il comando seguente monitora continuamente i file aperti sulla porta 22:
sudolsof -r-io:22
Come puoi vedere, nel terzo ciclo, lsof cattura la connessione stabilita al server su SSH.
Conclusione
Lsof è un'utilità incredibilmente utile. Ti consente di monitorare i file critici, nonché di monitorare gli utenti e i processi di apertura dei file. Questo può essere incredibilmente utile durante la risoluzione dei problemi o la ricerca di tentativi dannosi al sistema.
Come mostrato in questo tutorial, utilizzando vari esempi e metodi, è possibile combinare le funzionalità fornite dallo strumento lsof per il monitoraggio personalizzato.
Grazie per aver letto e condiviso! Spero che tu abbia imparato qualcosa di nuovo!