Moje sesje SSH wydają się spadać, chociaż to nie jest mój główny problem - głównym problemem jest to, że moje poprzednie sesje wciąż żyją, gorzej, ale jedna z nich działa, visudo
uniemożliwiając mi dostęp do nich!
who
pokazuje liczbę wszystkich sesji oprócz mojej obecnej, o której wiem, że się rozłączyłem, jak mogę zakończyć stare, aby zwolnić ich zasoby?
fuser -k /dev/pts/0
lub cokolwiek, co pojawi się nawho
wyjściu. Jednak trochę dziwne, że wszyscy ignorowali SIGHUP. Czy biegali wscreen
sesji czy coś?who
już nie), dzięki!Odpowiedzi:
Aby rozwiązać natychmiastowy problem, że plik sudoers jest zablokowany, możesz po prostu usunąć plik blokady. Zwykle będzie to `/etc/sudoers.tmp"; sprawdź stronę podręcznika, aby sprawdzić visudo. Jeśli usuniesz plik blokady, możesz ponownie uruchomić visudo.
Aby usunąć wszystkie sesje, które nadal pozostają zawieszone, najpierw sprawdź numer pid bieżącej sesji. Następnie, jeśli twój własny pid to 12345, zrób
Możesz to zrobić bez ostatniego,
| sh
tylko po to, aby sprawdzić PID, które planujesz zabić.Jeśli korzystasz z systemu Linux, możesz zamiast tego użyć
zabić swoją najstarszą sesję SSH. Kontynuuj robienie tego, dopóki nie pozostanie Ci tylko bieżąca sesja.
Możesz również ustawić
ServerAliveInterval 15
w twojej.ssh/config
posłać keepalive wiadomość co 15 sekund, gdy dane nie została wysłana.man ssh_config
po więcej informacji.źródło
grep -v 12345
część składni? przekazać wszystko, co nie zawiera12345
?grep -v 12345
oznacza „usuń dowolne pasujące wiersze12345
z dopasowania”. Dlatego najpierw należy zidentyfikować PID własnej sesji i użyć tego PID zamiast12345
.who
lubtop
wciąż pokazuje starą liczbę podpisanych użytkowników, nawet powinna pokazywać tylko 1. W jaki sposób można to zmusić do odświeżenia?Jeśli wyświetlasz listę procesów tak, abyś zobaczył ich polecenia i argumenty (jak np.
ps -f
Z procps robi), powinieneś zobaczyć procesy sshd o nazwie np .:Terminal (
pts/7
) jest tutaj kluczową częścią - jeśli porównasz go z obecnym terminalem (tty
), możesz zobaczyć, która jest twoja aktywna sesja. Istnieją oczywiście inne sposoby (np. Sprawdzenie PID aktualnie działającej powłoki i zlokalizowanie jej w drzewie procesów), ale jest to prawdopodobnie najłatwiejszy. Następnie możesz użyć czegoś w następujący sposób:Następnie możesz podać PID do zabicia,
xargs
ale zawsze upewnij się, że nie zabijesz głównegosshd
procesu, który obsługuje nowe połączenia .W powiązanej uwadze, należy pamiętać, że dość ogólnie parsowanie
ps
danych wyjściowych jest podatne na błędy (szczególnie w różnych systemach) ze względu na zmienność formatów wyjściowych (tutaj w dużym stopniu ograniczonych przez użycie-o pid= -o command=
).źródło
Zabije to zawieszanie sesji przez ponad 2 dni. Można to określić jako cron.
Zabije to wszystkich oprócz twojej (ostatniej aktywnej sesji). Uruchom to z terminala.
źródło