Middle
Hoe kun je in Linux zien met welke bestanden een programma momenteel werkt?
sobes.tech AI
Antwoord van AI
Gebruik de lsof-hulpprogramma (lijst open bestanden).
# Basisgebruik van lsof om een lijst van alle geopende bestanden weer te geven
lsof
Om een lijst te krijgen van open bestanden door een specifiek proces (op PID):
# Geef de lijst van open bestanden voor het proces met PID 1234
lsof -p 1234
Om een lijst te krijgen van open bestanden door een specifiek commando (op naam):
# Geef de lijst van open bestanden voor alle processen met de naam "nginx"
lsof -c nginx
Om een lijst te krijgen van open bestanden door een specifieke gebruiker:
# Geef de lijst van open bestanden voor de gebruiker "user1"
lsof -u user1
Aanvullende lsof-vlaggen:
| Vlag | Beschrijving |
|---|---|
-i |
Toont netwerkverbindingen (sockets) |
-n |
Converteert IP-adressen niet naar hostnamen |
-P |
Converteert poorten niet naar servicenames |
-r [N] |
Herstart lsof elke N seconden |
Voorbeeld van gebruik om te bepalen welk proces een specifiek bestand gebruikt:
# Welk proces gebruikt het bestand /var/log/syslog?
lsof /var/log/syslog
De output van lsof bevat de volgende kolommen:
- COMMAND: Naam van het commando dat het proces heeft gestart.
- PID: Proces-ID.
- TID: Thread-ID (indien van toepassing).
- USER: Gebruikersnaam die het proces heeft gestart.
- FD: Bestandsdescriptor.
- TYPE: Type van de bestandsknoop (DIR, REG, FIFO, CHR, BLK, SOCK, etc.).
- DEVICE: Apparaat-ID.
- SIZE/OFF: Bestandsgrootte of offset.
- NODE: Inode-nummer.
- NAME: Bestandsnaam of netwerkadres.