netwerkdiagnostiek

fuser — processen op bestanden en poorten opsporen

fuser toont welk proces een bestand, map of netwerkpoort in gebruik heeft. Handig om te achterhalen waarom een poort bezet is of een schijf niet ontkoppeld kan worden.

Basisgebruik

fuser bestand
fuser poort/protocol

Opties

OptieBetekenis
-kProcessen die het bestand/poort gebruiken beëindigen (SIGKILL)
-iVraag bevestiging vóór elk kill-signaal
-lToon alle beschikbare signalen
-mAlle processen op een gemount bestandssysteem
-n tcp / -n udpZoek op netwerk-namespace (poort)
-sStil — geen uitvoer, alleen exitcode
-vUitgebreid: toon PID, gebruiker, toegangstype
-4 / -6Alleen IPv4 of IPv6

Voorbeelden

Poorten

Welk proces luistert op poort 8080:

fuser 8080/tcp

Uitgebreide weergave met gebruiker en PID:

fuser -v 8080/tcp

Proces op poort 8080 beëindigen:

fuser -k 8080/tcp

Controleer of een poort vrij is:

fuser 3000/tcp 2>/dev/null || echo "Port 3000 vrij"

fuser geeft exitcode 1 als er geen proces gevonden wordt. Door 2>/dev/null weg te sturen en || te gebruiken, print je alleen iets als de poort vrij is. Handig in scripts vóórdat je een server start.

Bestanden en mappen

Welk proces een bestand open heeft:

fuser /var/log/syslog

Welke processen een map in gebruik hebben (bijv. vóór umount):

fuser -m /mnt/usb

Alle processen op een gemount bestandssysteem beëindigen:

fuser -km /mnt/usb

Combinatie met scripts

Wacht tot een poort vrijkomt:

while fuser 3000/tcp &>/dev/null; do
    echo "Wacht op poort 3000..."
    sleep 1
done
echo "Poort 3000 is vrij."

Start een service alleen als de poort vrij is:

fuser 3000/tcp 2>/dev/null && echo "Poort bezet" && exit 1
./mijn-server &

Exitcodes

CodeBetekenis
0Minstens één proces gevonden
1Geen proces gevonden (of fout)

Vergelijking met alternatieven

CommandoVoordeel
fuser 3000/tcpSnel, exitcode bruikbaar in scripts
lsof -i :3000Meer detail (FD, gebruiker, verbindingsstatus)
ss -tlpn sport = :3000Overzicht van alle sockets, sneller op grote systemen

Tip

Combineer met ps voor meer context over het gevonden proces:

pid=$(fuser 3000/tcp 2>/dev/null)
[ -n "$pid" ] && ps -p $pid -o pid,user,comm,args