Mis sesiones de SSH parecen estar cayendo, aunque ese no es mi problema principal: el problema principal es que mis sesiones anteriores todavía están vivas, peor aún, una de ellas se está ejecutando ¡ visudo
evitando que acceda a ellas!
who
muestra una cantidad de sesiones, todas excepto la actual que sé que se ha desconectado, ¿cómo puedo finalizar las antiguas para liberar sus recursos?
fuser -k /dev/pts/0
lo que sea que aparezca el terminal en lawho
salida. Sin embargo, un poco raro todos esos SIGHUP ignorados. ¿Estaban corriendo en unascreen
sesión o algo así?who
), ¡gracias!Respuestas:
Para resolver el problema inmediato, que el archivo sudoers está bloqueado, simplemente puede eliminar el archivo de bloqueo. Por lo general, será `/etc/sudoers.tmp"; revise la página del manual para verudo para verificar. Si elimina el archivo de bloqueo, puede volver a ejecutar visudo.
Para eliminar todas las sesiones que aún quedan pendientes, primero averigüe el pid de su propia sesión actual. Entonces, si tu propio pid es 12345, haz
Es posible que desee hacerlo sin el último final
| sh
solo para verificar los PID que planea matar.Si estás en Linux, puedes usar
matar tu sesión SSH más antigua. Continúe haciendo eso hasta que su sesión actual sea la única que quede.
También es posible que desee configurar
ServerAliveInterval 15
en.ssh/config
enviar un mensaje de alerta cada 15 segundos cuando no se hayan enviado datos.man ssh_config
para más información.fuente
grep -v 12345
parte de la sintaxis. pasar todo lo que no contiene12345
?grep -v 12345
significa "eliminar cualquier línea que coincida12345
con la coincidencia". Por lo tanto, primero debe identificar el PID de su propia sesión y usar ese PID en lugar de12345
.who
otop
aún mostrar el número antiguo de usuarios firmados, incluso debería mostrar solo 1. ¿Cómo se puede forzar a que se actualice?Si enumera los procesos para ver sus comandos y argumentos (como, por ejemplo,
ps -f
de procps), debería ver los procesos sshd llamados, por ejemplo:El terminal (
pts/7
) es la parte clave aquí: si lo compara con su terminal actual (tty
), puede ver cuál es su sesión activa. Por supuesto, hay otras formas de hacerlo (como mirar el PID del shell actualmente en ejecución y ubicarlo en el árbol de procesos), pero esta es probablemente la más fácil. Luego puede usar algo en estas líneas:Luego puede alimentar los PID para matar,
xargs
pero siempre asegúrese de no matar elsshd
proceso principal que maneja las nuevas conexiones .En una nota relacionada, tenga en cuenta que, en general, la
ps
salida de análisis es propensa a errores (especialmente en varios sistemas) debido a la variabilidad de sus formatos de salida (aquí mitigados en gran medida por el uso de-o pid= -o command=
).fuente
Esto matará las sesiones suspendidas por más de 2 días. Se podría poner como un cron.
Esto matará a todos menos a tu (última sesión activa). Ejecuta esto desde la terminal.
fuente