bash

Alle WSL Bash-Prozesse beenden

Dieser Artikel behandelt, wie man alle Prozesse in Windows Linux WSL Bash beendet und zwangsweise beendet, einschließlich laufender Programme, Daemons und Hintergrundprozesse.

Shou Arisaka
4 Min. Lesezeit
10. Okt. 2025

Dieser Artikel behandelt, wie man alle Prozesse in Windows Linux WSL Bash beendet und zwangsweise beendet, einschließlich laufender Programme, Daemons und Hintergrundprozesse.

Image

Ganz plötzlich: Ich betrachte meinen Computer als Server und starte ihn selten neu. Ich gehe oft fast einen Monat ohne Neustart. Nun, es ist nicht gut aus Sicherheitsupdate-Perspektive, wenn ich nicht mit einer gewissen Regelmäßigkeit neu starte, daher halte ich eine Mindestfrequenz ein.

Und wenn man einen Computer auf diese Weise verwendet, wird man unweigerlich von Speicher- und CPU-Auslastung geplagt, die sich im Laufe der Zeit ansammelt.

Image

Wie verwenden Sie WSL bash? Sie verwenden möglicherweise ConEmu, Termux oder starten einfach bash.exe von Win-R. Es ist nicht auf WSL bash beschränkt, aber Terminals scheinen oft nicht zu beenden, wenn man einfach das Konsolenfenster schließt.

Lassen Sie uns dies tatsächlich überprüfen, indem wir alle ConEmu- und bash-Fenster schließen und dann einen Befehl wie ps fjx ausführen, wenn Sie sicher sind, dass keine WSL-Prozesse mehr vorhanden sind.

Image

Seltsamerweise sind Prozesse, von denen Sie dachten, sie seien beendet, immer noch am Leben.

Ich verstehe den Mechanismus nicht vollständig, aber lassen Sie uns vorerst akzeptieren, dass Linux einfach so funktioniert.

Nun, wie können wir diese Prozesse wirklich zwangsweise beenden?

: kill all of pid within WSL

kill -9 $( ps fx -o pid )

Starten Sie bash beiläufig und führen Sie den obigen Befehl aus, um alle Prozesse zu beenden.

Übrigens können kill und viele andere Befehle mehrere Argumente als Array empfangen. Das oben Genannte ist unter Anwendung derselben Logik geschrieben. Einige Leute verwenden xargs, um etwas Ähnliches wie das oben Genannte auf umständlichere Weise zu tun, aber diese Schreibweise ist natürlich schneller und einfacher zu schreiben.

ps fx -o pid | xargs kill

[Ergänzung] Es scheint, dass Sie conhost.exe beenden müssen, damit es sinnvoll ist

Dies ist eine Ergänzung. Ich habe eine vollständigere Methode gefunden, also berichte ich darüber.

Zuvor, trotz Ausführung des obigen Befehls, fraß der Befehlszeilenprozess immer noch fast 50% der CPU, also dachte ich “Das geht nicht” und suchte nach einer anderen Methode.

Image

Wie Sie sehen, frisst der conhost.exe-Prozess CPU, also dachte ich, ich sollte ihn mit PowerShell oder so beenden, aber ich hatte ein schlechtes Gefühl, also schaute ich zuerst nach, wie man ihn beendet.

Und hier ist, was ich gefunden habe:

windows 7 - (When) is CONHOST.EXE actually necessary? - Super User

Anscheinend können Sie es mit dem folgenden Befehl zwangsweise beenden:

taskkill /f /im conhost.exe

[Warnung] Der obige Befehl betrifft nicht nur WSL, sondern alle Befehlszeilenprozesse. z.B. PowerShell, cmd. Einige Installationsprogramme verwenden Befehlszeilen, daher empfehle ich, dies insbesondere während einer Softwareinstallation zu vermeiden.

Ich bin nicht mit CMD vertraut, also weiß ich es nicht sicher, aber was es tut, ist wahrscheinlich dasselbe wie Stop-Process -Name “conhost” in PowerShell. Ich habe es nicht ausprobiert, also bin ich mir nicht sicher.

Image

Und wenn man sich den Task-Manager ansieht, ist es jetzt friedlich.

Wenn man sich die obige Seite ansieht, hängt dieser Prozess anscheinend mit Datei-I/O zusammen. Ich frage mich, warum er 50% der CPU frisst. Hmm. In meinem Fall steigt nach 2-3 Tagen die befehlszeilenbezogene CPU-Auslastung allmählich insgesamt an und endet schließlich so. In diesem Fall ist watch wahrscheinlich der Übeltäter.

watch -n 2.0 "cat \"${TIME_MANAGEMENT_DIR}/time_management_log.txt\" | awk '!/tmt-check/' | tail "

Ich führe oft Befehle wie diesen aus, also könnte dies die Ursache sein. Hmm, tail -f erlaubt keine detaillierte Filterung mit awk und dergleichen.

[Ergänzung] Es ist einfacher, Befehle von Win-R auszuführen

Nachdem ich den Prozess der Zwangsbeendigung seit dem Schreiben des obigen Artikels mehrmals durchlaufen habe, hat sich das Verfahren etwas verfeinert, also werde ich es vorstellen.

Sie können Befehle schnell mit der Win-R-Verknüpfung ausführen. Wenn keine ConEmu- oder Konsolenfenster geöffnet sind, ist es sogar einfacher, als cmd.exe zu öffnen und auszuführen. Wenn Sie außerdem den bash kill-Befehl auf ConEmu ausführen, erscheinen manchmal Überlebende. Es schließt nicht richtig, sozusagen.

taskkill /f /im conhost.exe 

Diesen Artikel teilen

Shou Arisaka 10. Okt. 2025

🔗 Links kopieren