Middle
Come si può sapere con quali file un programma sta lavorando attualmente in Linux?
sobes.tech AI
Risposta dell'AI
Utilizzare l'utility lsof (elencare i file aperti).
# Uso di base di lsof per visualizzare un elenco di tutti i file aperti
lsof
Per ottenere un elenco di file aperti da un processo specifico (per PID):
# Visualizzare l'elenco dei file aperti dal processo con PID 1234
lsof -p 1234
Per ottenere un elenco di file aperti da un comando specifico (per nome):
# Visualizzare l'elenco dei file aperti da tutti i processi chiamati "nginx"
lsof -c nginx
Per ottenere un elenco di file aperti da un utente specifico:
# Visualizzare l'elenco dei file aperti dall'utente "user1"
lsof -u user1
Flag aggiuntivi di lsof:
| Flag | Descrizione |
|---|---|
-i |
Mostra le connessioni di rete (socket) |
-n |
Non convertire indirizzi IP in nomi host |
-P |
Non convertire le porte in nomi di servizi |
-r [N] |
Riavvia lsof ogni N secondi |
Esempio di utilizzo per determinare quale processo utilizza un file specifico:
# Quale processo utilizza il file /var/log/syslog?
lsof /var/log/syslog
L'output di lsof include le seguenti colonne:
- COMMAND: Nome del comando che ha avviato il processo.
- PID: Identificatore del processo.
- TID: Identificatore del thread (se applicabile).
- USER: Nome dell'utente che ha avviato il processo.
- FD: Descrittore di file.
- TYPE: Tipo di nodo del file (DIR, REG, FIFO, CHR, BLK, SOCK, ecc.).
- DEVICE: Identificatore del dispositivo.
- SIZE/OFF: Dimensione del file o offset.
- NODE: Numero di inode.
- NAME: Nome del file o indirizzo di rete.