Meine SSH - Sitzungen scheinen fallen zu werden , obwohl das nicht mein Hauptproblem ist , - das Hauptproblem meiner früheren Sitzungen ist noch am Leben sind, schlimmer noch einer von ihnen läuft visudo
mir verhindert es den Zugriff auf !
who
Zeigt eine Reihe von Sitzungen an, die alle außer meiner aktuellen Sitzung getrennt haben. Wie kann ich die alten Sitzungen beenden, um die Ressourcen freizugeben?
fuser -k /dev/pts/0
oder was auch immer in derwho
Ausgabe angezeigt wird. Ein bisschen komisch, dass alle SIGHUP ignoriert haben. Waren sie in einerscreen
Sitzung oder so?who
mehr in), danke!Antworten:
Um das unmittelbare Problem zu lösen, dass die sudoers-Datei gesperrt ist, können Sie die Sperrdatei einfach löschen. Es ist normalerweise "/etc/sudoers.tmp"; überprüfen Sie die Manpage auf Visudo, um dies zu überprüfen. Wenn Sie die Sperrdatei löschen, können Sie Visudo erneut ausführen.
Um alle Sitzungen zu löschen, die noch hängen bleiben, ermitteln Sie zunächst die PID Ihrer aktuellen Sitzung. Wenn Ihre eigene PID 12345 lautet, tun Sie dies
Möglicherweise möchten Sie es ohne das letzte
| sh
Mal tun, nur um die PIDs zu überprüfen, die Sie töten möchten.Wenn Sie unter Linux arbeiten, können Sie stattdessen verwenden
um deine älteste SSH-Sitzung zu beenden. Fahren Sie damit fort, bis nur noch Ihre aktuelle Sitzung übrig ist.
Vielleicht wollen Sie auch setzen
ServerAliveInterval 15
in Ihrem.ssh/config
einer Leben - Nachricht alle 15 Sekunden zu senden , wenn keine Daten gesendet werden.man ssh_config
für mehr Informationen.quelle
grep -v 12345
Teil der Syntax erfüllt . Pass alles, was nicht enthalten ist12345
?grep -v 12345
bedeutet "alle übereinstimmenden Zeilen12345
aus dem Match entfernen ". Daher sollten Sie zuerst die PID Ihrer eigenen Sitzung identifizieren und diese PID anstelle von verwenden12345
.who
odertop
immer noch die alte Anzahl der angemeldeten Benutzer angezeigt, auch wenn nur 1 angezeigt werden sollte. Wie kann das erzwungen werden, aktualisiert zu werden?Wenn Sie Prozesse
ps -f
auflisten, so dass Sie ihren Befehl und ihre Argumente sehen (wie z. B. von procps), sollten Sie sehen, dass sshd-Prozesse aufgerufen werden, z.Das Terminal (
pts/7
) ist hier der Schlüsselteil - wenn Sie es mit Ihrem aktuellen Terminal (tty
) vergleichen, können Sie sehen, welches Ihre aktive Sitzung ist. Es gibt natürlich auch andere Möglichkeiten, dies zu tun (z. B. die PID der aktuell ausgeführten Shell zu überprüfen und diese im Prozessbaum zu suchen), aber dies ist wahrscheinlich die einfachste. Sie können dann etwas in dieser Richtung verwenden:Sie können dann die zu tötenden PIDs eingeben,
xargs
aber stellen Sie immer sicher, dass Sie den Hauptprozesssshd
, der neue Verbindungen verarbeitet, nicht beenden .In diesem Zusammenhang sei darauf hingewiesen, dass das Parsen von
ps
Ausgaben im Allgemeinen (insbesondere systemübergreifend) aufgrund der Variabilität ihrer Ausgabeformate fehleranfällig ist (hier in hohem Maße durch die Verwendung von-o pid= -o command=
).quelle
Dadurch werden Sitzungen getötet, die mehr als 2 Tage lang hängen. Es könnte als cron gesetzt werden.
Dadurch werden alle außer Ihrer (letzten aktiven Sitzung) getötet. Führen Sie dies vom Terminal aus.
quelle