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?
Sie können den fuser
Befehl 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 man
Seiten.
fuser
Implementierungen gleich oder funktionieren gleich. Selbst wenn dies-i
in 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 dasfuser
in diesem System verfügbare hat auch nicht die-i
Option.fuser
nochlsof
arbeitet für mich auf einem virtualbox Gast. Diese Antwort hat mich gerettet.@ jims Antwort ist richtig -
fuser
ist was Sie wollen.Zusätzlich (oder alternativ) können Sie
lsof
weitere 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,fuser
können Sie dies natürlich mit der-k
Option tun. Mit der Option können Sie auchfuser
andere Signale verwenden. Weitere-s
Informationen finden Sie auf der Manpage.)Zum Beispiel mit einem
tail -F /etc/passwd
Lauf in einem Fenster:Beachten Sie, dass Sie damit auch
lsof
herausfinden können, welche Prozesse bestimmte Sockets verwenden. Ein ausgezeichnetes Werkzeug, das Sie in Ihrem Arsenal haben sollten.quelle
lsof | head -1
um 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.