Ich habe versucht, eine Datei unter Linux mit zu entfernen rm -rf file_name, habe aber den Fehler erhalten:
rm: file_name not removed. Text file busy
Wie kann ich herausfinden, welcher Prozess diese Datei verwendet?
Antworten:
Sie können den fuserBefehl wie folgt verwenden:
fuser file_name
Sie erhalten eine Liste der Prozesse, die die Datei verwenden.
Sie können damit verschiedene Flags verwenden, um eine detailliertere Ausgabe zu erhalten.
Weitere Informationen finden Sie im Wikipedia-Artikel der Fixiereinheit oder auf den manSeiten.
fuserImplementierungen gleich oder funktionieren gleich. Selbst wenn dies -iin POSIX definiert ist, verfügt die von Ihnen verwendete Implementierung nicht unbedingt über dieselben Optionen wie die im Wikipedia-Artikel beschriebenen. Zum Beispiel verwende ich gerade AIX und das fuserin diesem System verfügbare hat auch nicht die -iOption.
fusernoch lsofarbeitet für mich auf einem virtualbox Gast. Diese Antwort hat mich gerettet.
@ jims Antwort ist richtig - fuserist was Sie wollen.
Zusätzlich (oder alternativ) können Sie lsofweitere Informationen einschließlich des Benutzernamens abrufen, falls Sie eine Berechtigung benötigen (ohne einen zusätzlichen Befehl ausführen zu müssen), um den Prozess abzubrechen. (Wenn Sie den Prozess beenden möchten, fuserkönnen Sie dies natürlich mit der -kOption tun. Mit der Option können Sie auch fuserandere Signale verwenden. Weitere -sInformationen finden Sie auf der Manpage.)
Zum Beispiel mit einem tail -F /etc/passwdLauf in einem Fenster:
ghoti@pc:~$ lsof | grep passwd
tail 12470 ghoti 3r REG 251,0 2037 51515911 /etc/passwd
Beachten Sie, dass Sie damit auch lsofherausfinden können, welche Prozesse bestimmte Sockets verwenden. Ein ausgezeichnetes Werkzeug, das Sie in Ihrem Arsenal haben sollten.
lsof | head -1um alle Header zu sehen.
lsof | grep -E "PID|<your_process_name>"Zeigt sowohl die erste Zeile als auch den Prozess an, den Sie abfragen möchten.