Ich weiß, dass es ctrl+ gibt c, aber manchmal funktioniert das nicht. Auf dem Ubuntu-Desktop kann ich einfach das Terminalfenster schließen und in diesem Fall ein neues öffnen. Wie würde dies jedoch mithilfe der CLI auf dem Ubuntu-Server gelöst werden (ohne die Box neu zu starten)?
server
command-line
CrazeD
quelle
quelle
Antworten:
CTRL+Cwird
SIGINT
an die Anwendung senden . Die Anwendung kann einen Handler für dieses Signal konfigurieren oder das Signal ignorieren. Standardmäßig gibt es keinen Handler undSIGINT
die Anwendung wird beendet.Sie können verwenden, CTRL+\welche senden
SIGQUIT
. Dies erzeugt auch einen Core-Dump, wenn das Core-Limit nicht Null ist.Sie können den Prozess anhalten und mit zur Shell zurückkehren. Dadurch CTRL+Zwird die Ausführung des Prozesses gestoppt und zur Shell-Eingabeaufforderung zurückgekehrt. Der Prozess befindet sich im Speicher und ist als Job in der aktuellen Shell verfügbar. Sie können dann
kill -SIGNAL %%
oder verwendenkill -SIGNAL %<job_ID>
, um ein Signal an diesen Job zu senden. ZB um den letzten Job zu tötenkill -9 %%
Wenn keiner von ihnen funktioniert, können Sie immer senden
SIGTERM
, als letzten Ausweg,SIGKILL
der jeden Prozess beendet. Dieses Signal muss wie alle anderen Signale als derselbe Benutzer wie der Prozess, den Sie stoppen möchten, oder als Root gesendet werden. UmSIGKILL
an den Prozess zu senden , suchen Sie zuerst den Prozess mitps aux
oderps -edf
und führen Sie ihn dann auskill -SIGKILL <process_ID>
, wobei dies<process_ID>
diePID
Spalte in derps
Ausgabe ist.Die Signale können nicht geliefert werden, wenn sich der Prozess in einem unterbrechungsfreien Anruf befindet. Unterbrechungsfreie Aufrufe sind Kernelfunktionen, die nicht gestoppt werden können und normalerweise aufgrund eines schlechten Treibers (z. B. eines nicht wiedereintretenden Treibers ) auftreten. Ein Prozess, der sich im ununterbrochenen Ruhezustand befindet, kann nicht gestoppt werden, bis der Anruf abgeschlossen oder der Server neu gestartet wurde.
Wenn ein Prozess zu einem Zombie wird , werden keine Ressourcen verwendet, die nur Platz in der Prozesstabelle beanspruchen. Ein Zombie-Prozess kann keine Signale empfangen.
Die Liste der Signale für die aktuelle Architektur finden Sie mit
kill -l
Sehen Sie die man - Seiten von
kill
,ps
undbash
. Um eine Manpage zu sehen, verwenden Sie Folgendes:man ps
quelle
Wenn Sie vollen Konsolenzugriff haben, können Sie dies tun Alt- F1..12und eine neue Konsole erhalten.
Von dort aus können Sie eine Prozessliste wie folgt erstellen:
Führen Sie dann eine
kill
Prozess-ID aus:Wenn Sie keinen vollständigen Konsolenzugriff haben, öffnen Sie einfach ein anderes Terminalfenster (möglicherweise über PuTTY oder ähnliches) und führen Sie die oben beschriebenen Schritte aus, um die Schritte aufzulisten und zu beenden.
quelle
Strg C sendet ein SIGINT an Ihren laufenden Prozess. Wenn Sie keine andere Konsole öffnen möchten, können Sie ein SIGQUIT mit Strg \ senden. Dies wird die meisten alltäglichen Apps ansprechen, die der SIGINT nicht tut.
Ich persönlich wollte einen Weg, um ein SIGKILL mit einer Verknüpfung zu senden, aber mir ist kein Weg bekannt, dies zu tun.
quelle
Ich halte
pgrep
undpkill
sein einfacher zu bedienen alskill
mit einer expliziten Prozess - ID.Anstatt mit Signal 9 (SIGKILL) zu beginnen, sollten Sie auch mit dem Standard-SIGTERM (15) beginnen. Dies gibt dem Prozess die Möglichkeit, ordnungsgemäß zu beenden (wenn dies möglich ist).
pkill -15 thing
undpkill thing
sollte gleichwertig sein.So würde das funktionieren. Angenommen, ntpd ist aufgehängt.
Was sind die Prozesse? (Sie können zu pkill springen, wenn Sie glauben, dass Sie keine falsch positiven Ergebnisse haben).
Töte die Prozesse:
Verwenden Sie
pgrep
erneut, um festzustellen, ob es erfolgreich war.Wenn nicht, gehen Sie schließlich zu
pkill -9
.quelle
Sie würden zu einem neuen Terminal wechseln, die PID des steckengebliebenen Prozesses ermitteln (mit
ps
) und dann verwendenkill
, um den Prozess abzubrechen. Ich würde zuerst verwendenkill (PID)
. Wenn das nicht funktioniert, würde ich verwendenkill -9 (PID)
. Wenn dies den Prozess nicht stoppt, muss der Computer neu gestartet werden.quelle
Cntrl+ \arbeitete für mich (wo Cntrl+ coder znicht gearbeitet hat)
quelle