
OFLH bei WinFuture
Vielen Dank an die WinFuture-Redaktion für die Vorstellung von OFLH.
Beitrag lesenOpen File Lock Handle
Eine Datei lässt sich nicht umbenennen oder löschen? oflh zeigt, welche Prozesse sie verwenden und welche App dahintersteckt. Untersuche Dateien, Ordner, ganze Laufwerke und lokale Ports in der Desktop- oder interaktiven Terminal-App für Windows, Linux und macOS.
Für Entwickler und Admins bei Meldungen wie „Die Datei ist in einem anderen Programm geöffnet“, „Device or resource busy“ oder „address already in use“.
port:3000 suchen.oflh ./build# wer etwas unter ./build hältoflh 'C:\'# ganzes Laufwerk C: (PowerShell)oflh --port 3000# wer auf Port 3000 lauscht

Vielen Dank an die WinFuture-Redaktion für die Vorstellung von OFLH.
Beitrag lesenOFLH im Verzeichnis ansehen und Software-Alternativen vergleichen.
AlternativeTo-Eintrag ansehenDerselbe Scanner, dieselben Ergebnisse. Nimm die Oberfläche, die zu deiner Arbeitsweise passt.
Öffne eine Datei oder einen Ordner oder zieh sie ins Fenster, grenze die Liste mit Suche, Spaltenfilter oder „Nur Sperrhinweise“ ein und folge im Detailbereich dem Elternprozessbaum.
Desktop-Rundgang ansehen →Desktop-App herunterladen →Eine einzelne, 5–6 MB große Programmdatei ohne Installation. Tastaturgesteuerte Ansichten für Prozesse, gesperrte Dateien und Ports, mit einer Suche, die Platzhalter und Wortanfänge versteht.
Auf asciinema ansehen →Terminal-App herunterladen →Wenn sich eine Datei nicht löschen lässt oder ein Server nicht startet, finde den Prozess und die Anwendung, die dahintersteckt.
Windows-Screenshots aus der Projekt-README · Zum Vergrößern auf ein Bild klicken
Wähle Datei öffnen oder Ordner öffnen, zieh einen Pfad ins Fenster oder untersuche ein ganzes Laufwerk wie C:\. Suche nach Prozessname, PID oder vollständigem Pfad. Eine ausgewählte Zeile zeigt Passende Dateizugriffe und die Prozesshierarchie.
Unter Windows kannst du auch eine Datei oder einen Ordner im Explorer rechts anklicken und Datei untersuchen oder Ordner untersuchen wählen.

Über die Prozesshierarchie findest du den Editor, Browser, das Terminal oder den Dienst hinter einem Hilfsprozess. Per Rechtsklick kannst du den Pfad oder die PID kopieren, die Datei im Dateimanager zeigen oder passende Dateizugriffe ansehen.
Eine offene Datei ist kein Beweis für eine Sperre. Nur Sperrhinweise filtert nach Belegen; bei Besitzer unbestätigt kann Windows den Verursacher nicht nachweisen.

Schließe die Anwendung möglichst normal. Bei Beenden nennt die Bestätigung alle ausgewählten Prozesse, auch durch Filter versteckte, und wählt standardmäßig Abbrechen. OFLH prüft die Prozessidentität vor jeder Aktion erneut.
Speichere vorher: Beim Beenden können ungespeicherte Änderungen verloren gehen. Aktualisiere danach mit F5, um zu prüfen, ob die Datei noch verwendet wird.

Öffne Ports und suche port:3000, um den gebundenen Prozess zu finden. Grenze die Liste mit tcp, udp oder pid:1234 ein. Eine ausgewählte Zeile zeigt Dateien und Prozesshierarchie.
Ports zeigt lokale TCP-Listener und gebundene UDP-Sockets. Bestehende Verbindungen und die Erreichbarkeit von anderen Rechnern werden nicht geprüft.

Für den Moment, in dem Löschen, Umbenennen, Aushängen oder ein Serverstart fehlschlägt und du wissen willst, warum.
Gib oflh eine Datei, einen Ordner oder C:\. Ein Ordnerscan erfasst alles darin und zeigt, wie jeder Prozess es nutzt: geöffnete Datei, eingeblendete Datei, Programmdatei oder (unter Linux und macOS) Arbeitsverzeichnis.
oflh --port 3000 zeigt den TCP-Listener oder gebundenen UDP-Socket auf einem Port, mit PID und Adresse. Die Socket-Tabellen werden direkt gelesen; oflh ruft weder lsof noch ss oder netstat auf.
Zu jedem Ergebnis gehört die Kette der Elternprozesse. So führst du einen node- oder dotnet-Worker auf den Editor, das Terminal oder den Dienst zurück, der ihn gestartet hat.
Sperrhinweise werden getrennt von einfach geöffneten Dateien angezeigt. Kann Windows nicht belegen, welcher Prozess eine Sperre hält, steht dort „Besitzer unbestätigt“ statt einer Vermutung.
oflh schließt nie Handles in fremden Prozessen. Es bittet die Anwendung, sich zu beenden, oder beendet sie nach einer Rückfrage, bei der „Abbrechen“ vorausgewählt ist, und prüft vorher erneut PID und Startzeit.
Gescannt wird nur auf deinem Rechner. Geschrieben in Rust, MIT-lizenziert und auf nativen Windows-, Linux- und macOS-Runnern für x86-64 und ARM64 getestet.
lsof und fuser decken Linux und macOS ab, Ressourcenmonitor, Process Explorer und handle.exe decken Windows ab. Das sind gute Werkzeuge. oflh unterscheidet sich in drei Punkten:
Du fragst unter Windows, Linux und macOS auf dieselbe Weise, welcher Prozess eine Datei oder einen Port hält, wählst den Prozess aus und beendest ihn direkt in der App. Kein Abtippen von PIDs für kill oder taskkill.
oflh wurde gezielt auf Geschwindigkeit optimiert: Es gleicht die Dateien, die laufende Prozesse halten, mit deinem Ziel ab, statt die Festplatte zu durchlaufen. Ein Scan von ganz C:\ oder / dauerte in unseren eigenen Messungen 195–510 ms.
Geöffnete Dateien und echte Sperrhinweise werden getrennt angezeigt. Kann Windows nicht belegen, welcher Prozess einen Freigabekonflikt hält, steht dort „Besitzer unbestätigt“ statt eines geratenen Schuldigen.
oflh ist auf Geschwindigkeit optimiert. Es durchläuft keinen Verzeichnisbaum, sondern fragt das Betriebssystem, welche Dateien jeder laufende Prozess hält. Ein Scan von ganz C:\ oder / dauert deshalb kaum länger als ein kleiner Ordner.
C:\C:\/Windows-Ordner mit 2.048 Dateien, davon 128 geöffnet (Median aus fünf Läufen): früheres Restart-Manager-Backend → aktuelles Backend
Das sind unsere eigenen Messungen: Einzelläufe des Backends am 5.–6. Oktober 2026 (Windows auf GitHub-Runnern, Linux auf einem lokalen Rechner), ohne App-Start. Hardware, Prozessanzahl und Berechtigungen verändern das Ergebnis. Methodik, Rohdaten und Anleitung zum Nachmessen →
Für ein ganzes Laufwerk öffnest du C:\ oder / wie jeden anderen Ordner. Schnellstart ↑
Gut zu wissen, bevor du herunterlädst.
Beide Apps sind interaktiv. Die Terminal-App beendet sich mit einem Fehler, wenn sie nicht mit einem Terminal verbunden ist, und es gibt keine JSON-Ausgabe. Für Skripte oder CI ist sie daher nicht gedacht.
Prozesse anderer Benutzer oder vom System geschützte Prozesse können fehlen; unvollständige Scans zeigen „Ergebnisse ggf. unvollständig“. Mit erhöhten Rechten siehst du mehr.
Ein Freigabekonflikt beweist, dass eine Datei eingeschränkt ist, nicht welcher Prozess sie eingeschränkt hat. Solche Zeilen zeigen „Besitzer unbestätigt“.
Ports heißt: TCP-Listener und gebundene UDP-Sockets, keine bestehenden Verbindungen und keine Aussage darüber, ob ein Port von einem anderen Rechner erreichbar ist.
Die Releases sind weder codesigniert noch notarisiert. Windows kann „Unbekannter Herausgeber“ anzeigen, und macOS kann die App blockieren. Vergleiche den Download mit den SHA-256-Prüfsummen in checksums.txt, bevor du ihn zulässt.
Kostenlos für Windows, Linux und macOS, jeweils für x86-64 und ARM64.
Aktuelles Release: v0.8.0 · Versionshinweise
Wähle diese Version für eine grafische App mit Fenstern, Schaltflächen und einer Prozessliste.
Desktop-App
Desktop-App herunterladenInstaller · x86-64| Paket | x86-64 | ARM64 |
|---|---|---|
| Installer | Herunterladen | Herunterladen |
Desktop-App
Desktop-App herunterladen.dmg · Apple Silicon| Paket | Apple Silicon | Intel |
|---|---|---|
.dmg | Herunterladen | Herunterladen |
Da die Anwendung nicht signiert ist, kann macOS sie als „beschädigt“ melden. Gib sie mit diesem Befehl im Terminal manuell frei und öffne sie erneut. Passe den Pfad an, falls sie woanders installiert ist.
xattr -cr "/Applications/OFLH Desktop.app"Desktop-App
Desktop-App herunterladen.deb · x86-64| Paket | x86-64 | ARM64 |
|---|---|---|
.deb | Herunterladen | Herunterladen |
.rpm | Herunterladen | Herunterladen |
.tar.gz | Herunterladen | Herunterladen |
brew install --cask karimz1/tap/oflh-desktopDer Homebrew-Tap wird separat aktualisiert und kann hinter dem aktuellen Release zurückliegen. Mit brew info siehst du, welche Version installiert wird.
Auch die Homebrew-Version ist unsigniert. macOS kann den ersten Start blockieren.
Da die Anwendung nicht signiert ist, kann macOS sie als „beschädigt“ melden. Gib sie mit diesem Befehl im Terminal manuell frei und öffne sie erneut. Passe den Pfad an, falls sie woanders installiert ist.
xattr -cr "/Applications/OFLH Desktop.app"Diese Version läuft in einem Terminal. Öffne PowerShell unter Windows oder ein Terminal unter macOS und Linux. Ein Doppelklick auf die CLI-Datei öffnet keine Desktop-App.
Terminal-Version (CLI / TUI)
Terminal-Version herunterladen.exe · x86-64| Paket | x86-64 | ARM64 |
|---|---|---|
.exe | Herunterladen | Herunterladen |
Terminal-Version (CLI / TUI)
Terminal-Version herunterladenApple Silicon| Paket | Apple Silicon | Intel |
|---|---|---|
| Programm | Herunterladen | Herunterladen |
Terminal-Version (CLI / TUI)
Terminal-Version herunterladenx86-64| Paket | x86-64 | ARM64 |
|---|---|---|
| Programm | Herunterladen | Herunterladen |
brew install karimz1/tap/oflh-cliDer Homebrew-Tap wird separat aktualisiert und kann hinter dem aktuellen Release zurückliegen. Mit brew info siehst du, welche Version installiert wird.
Wähle die Datei für dein Betriebssystem und deinen Prozessor. Es ist eine einzelne Programmdatei ohne Installation. Benenne sie in oflh um (oflh.exe unter Windows), mache sie unter macOS und Linux ausführbar und lege ihren Ordner in den PATH.
Ohne Installation: Download umbenennen und im Ordner starten, in dem er liegt.
mv ./oflh-cli.darwin.arm64 ./oflh
chmod +x ./oflh
./oflh ./buildBeispiel für Apple Silicon. Intel-Mac: oflh-cli.darwin.amd64. Linux: oflh-cli.linux.amd64 oder oflh-cli.linux.arm64.
Rename-Item .\oflh-cli.windows.amd64.exe oflh.exe
.\oflh.exe .\buildBeispiel für x86-64. ARM64: oflh-cli.windows.arm64.exe.
Die Releases sind weder codesigniert noch notarisiert. Windows kann „Unbekannter Herausgeber“ anzeigen, und macOS kann die App blockieren. Vergleiche den Download mit den SHA-256-Prüfsummen in checksums.txt, bevor du ihn zulässt. Installationshinweise.
Was jedes Betriebssystem erkennen kann und was nicht: Plattformunterstützung →
Windows meldet „Der Prozess kann nicht auf die Datei zugreifen, da sie von einem anderen Prozess verwendet wird“ oder „Die Datei ist in einem anderen Programm geöffnet“, sagt aber nicht, in welchem. Starte oflh pfad\zur\datei in PowerShell oder öffne die Datei in OFLH Desktop. Du siehst jeden Prozess, der sie verwendet, auch Programme, die sie als Modul geladen haben. Die Ansicht „Gesperrte Dateien“ zeigt, ob ein Freigabekonflikt beim Lesen, Schreiben oder Löschen besteht. Für einen Ordner oder ein ganzes Laufwerk gibst du den Ordner oder C:\ an.
Wenn ein Server mit „address already in use“ (EADDRINUSE) abbricht, starte oflh --port 3000. Du siehst den TCP-Listener oder gebundenen UDP-Socket auf diesem Port mit PID, Prozessname und Adresse; oflh --ports listet alle auf. In der Desktop-App öffnest du die Ansicht „Ports“ und suchst nach port:3000. Angezeigt werden nur lokale Bindungen, keine bestehenden Verbindungen.
Ein Prozess hat noch eine Datei, eine Speichereinblendung oder sein Arbeitsverzeichnis in dem Pfad, den du löschen oder aushängen willst. Starte oflh mit diesem Pfad. Du siehst, welche Prozesse ihn wie nutzen und welche Anwendung sie gestartet hat, und kannst dann den richtigen schließen oder beenden. „Text file busy“ bedeutet, dass ein Prozess diese Datei ausführt; sie erscheint dann als Programmdatei.
C:\ oder / auf einmal prüfen?Ja. Starte oflh 'C:\' in PowerShell oder oflh / unter Linux, oder wähle das Wurzelverzeichnis in der Desktop-App über „Ordner öffnen“. oflh gleicht aktive Prozessreferenzen ab, statt die Festplatte zu durchlaufen. Scans ganzer Laufwerke dauerten deshalb in unseren eigenen Messungen zwischen 195 und 510 ms. Siehe die Messungen.
Nein. Die Ansicht „Prozesse“ listet jeden Prozess mit einer Referenz auf das Ziel. „Gesperrte Dateien“ („Nur Sperrhinweise“ in der Desktop-App) verlangt echte Belege: POSIX-, flock- oder OFD-Sperren unter Linux, Byte-Range-Konflikte unter macOS und Freigabekonflikte unter Windows. Windows kann nicht immer belegen, welcher Prozess einen Freigabekonflikt verursacht hat; solche Zeilen sind als „Besitzer unbestätigt“ markiert.
Nein. Wer ein Handle in einem fremden Prozess zwangsweise schließt, kann dessen Zustand beschädigen. Deshalb macht oflh das nicht. Es zeigt dir den Prozess und die Anwendung dahinter, und du schließt sie regulär oder beendest sie nach einer Rückfrage, bei der „Abbrechen“ vorausgewählt ist. Speichere vorher deine Arbeit: Beim Beenden können ungespeicherte Änderungen verloren gehen.
Wähle den Prozess aus und sieh dir seinen Elternprozessbaum an. Er reicht vom ältesten erfassten Elternprozess bis zum ausgewählten Prozess und verbindet einen Worker wie node oder dotnet mit dem Editor, Terminal oder Dienst, der ihn gestartet hat. In der Terminal-App fokussierst du den Baum mit Tab. Nicht identifizierbare Elternprozesse werden als nicht verfügbar angezeigt.
Nein. oflh läuft als normaler Benutzer und zeigt die Prozesse, die dein Konto prüfen darf; fehlen welche, meldet es „Ergebnisse ggf. unvollständig“. Mit erhöhten Rechten siehst du mehr. Wird das Beenden verweigert, bietet die Desktop-App „Mit Administratorrechten erneut versuchen“ an.
Noch nicht. Beide Apps sind interaktiv: Die Terminal-App beendet sich mit einem Fehler, wenn sie nicht mit einem Terminal verbunden ist, und es gibt keine JSON-Ausgabe.
Nein. Gescannt wird lokal; Dateinamen, Inhalte, Prozessdaten und Ergebnisse bleiben auf deinem Rechner. Release-Builds prüfen auf neue Versionen, indem sie eine kleine JSON-Datei von dieser Website abrufen, mit GitHub als Ausweichquelle. Die Anfrage enthält keine Pfade oder Prozessdaten. In der Terminal-App schaltest du das mit --no-update-check ab. Quellcode und Build-Protokolle sind auf GitHub öffentlich.