Wenn ich versuche, eine Registerkarte in Gnome Terminal zu schließen, heißt es:
Dieses Terminal schließen? In diesem Terminal wird noch ein Prozess ausgeführt. Durch Schließen des Terminals wird es getötet.
Wie kann ich herausfinden, was noch läuft? Beachten Sie, dass die Ausgabe von nichts enthält jobs
. Vielen Dank.
screen
,tmux
,script
,ssh
,mc
und drehte die Platten aus, oder einfach nur eine andere Shell zum Beispiel durch die Eingabebash
, oder etwas in diese Richtung. Drücken Sie Strg + D oder geben Sie einexit
, um die Shell zu beenden. Sie sehen, wo Sie landen.exit
, hat die Gnom Endanschlussstreifen nicht schließen.exit
wird es dann wahrscheinlich schließen. @egmont können Sie dies bitte zu einer Antwort verschieben.Antworten:
Wählt alle dem Terminal zugeordneten Prozesse aus.
quelle
nohup
Befehl erzeugte Prozesse werden vom Terminal getrennt, blockieren Sie also nicht dessen Schließen. Mit diesem Befehl werden sie jedoch weiterhin aufgelistet.Sie können einen Blick auf die Prozesse werfen, die die PID Ihrer Shell als übergeordnetes Element auflisten. Wie Sie vielleicht wissen oder nicht, können wir das
ps
Format angebenHier erhalten wir die PID der Shell von einer speziellen Variablen
$$
inSHELLPID
, die dann von awk in der Subshell der Pipe verwendet werden kann. Im Wesentlichen listen wir nur Prozesse in Form von NAME, PID, übergeordneter PID auf und filtern nur diejenigen heraus, die die entsprechende PID in der letzten Spalte haben.quelle
Wenn Sie einen Prozess im Terminal (z. B. gedit) gestartet haben, sind die Prozess-ID (PID) (von bash) und die übergeordnete Prozess-ID (PPID) (von gedit) für diese beiden Prozesse identisch. Dies ist in der Ausgabe von zu sehen
Befehl. Um die Lesbarkeit zu verbessern, "leiten" Sie zuerst die Ausgabe,
grep
um die PID aller aktuell ausgeführten "Bash" -Prozesse zu ermitteln, und "leiten" Sie sie dann erneut anawk
. Dasawk
wählt nur die Felder PID und Prozessname (Feld 2 und 8) aus und gibt sie auf dem Bildschirm aus.ps -ef | grep bash | awk '{print $2 ": " $8}'
Die Nummer im Ausgang ist PID. Sie werden es verwenden, um herauszufinden, welcher Prozess in einem Terminal mit dieser PID gestartet wurde. Beachten Sie, dass es mehr als eine Ausgabezeile geben kann, wenn Sie mehr als ein Terminal geöffnet haben. Um nun die "untergeordneten" Prozesse (falls vorhanden) dieser Terminalsitzungen zu finden, können wir diesen Befehl verwenden:
ps -ef | awk '{if ($3 == EnterPID) print $2 ": " $8;}'
Sie müssen im letzten Befehl die PID-Nummer anstelle von EnterPID eingeben. Wenn es mehr als eine PID für "Bash" gibt, müssen Sie alle ausprobieren.
Der letzte Befehl überprüft nur die Ausgabe von
ps -ef
und sucht, ob PID (die Sie aus dem vorherigen Befehl gefunden haben) und PPID für jeden Prozess gleich sind.Mehr Info:
Mann ps
Mann awk
quelle
Sie können verwenden
htop
. In Ubuntu 16.04 (und höher) können Sie es einfach durch Eingabe installierensudo apt-get install htop
.Sie können auch verwenden
top
.quelle
htop
?