Minhas sessões SSH parecem estar caindo, mas esse não é o meu maior problema - o principal problema é que minhas sessões anteriores ainda estão vivas, pior ainda, uma delas está em execução, visudo
impedindo-me de acessá-la!
who
mostra várias sessões, todas, exceto a atual, que sei que foram desconectadas. Como posso encerrar as antigas para liberar seus recursos?
fuser -k /dev/pts/0
ou qualquer outro terminal que esteja aparecendo nawho
saída. Um pouco estranho todos aqueles que ignoraram SIGHUP, no entanto. Eles estavam correndo em umascreen
sessão ou algo assim?who
mais 0 ), obrigado!Respostas:
Para resolver o problema imediato, que o arquivo sudoers está bloqueado, você pode simplesmente excluir o arquivo de bloqueio. Geralmente será `/etc/sudoers.tmp"; verifique a página de manual do visudo para verificar. Se você excluir o arquivo de bloqueio, poderá executar o visudo novamente.
Para excluir todas as sessões que ainda estão suspensas, primeiro descubra o detalhe da sua própria sessão atual. Então, se seu próprio pid for 12345, faça
Você pode fazer isso sem o
| sh
primeiro final apenas para verificar os PIDs que planeja matar.Se você estiver no Linux, poderá usar
para matar sua sessão SSH mais antiga. Continue fazendo isso até que sua sessão atual seja a única.
Você também pode querer definir
ServerAliveInterval 15
em sua.ssh/config
para enviar uma mensagem keepalive a cada 15 segundos quando nenhum dado foi enviado.man ssh_config
Para maiores informações.fonte
grep -v 12345
parte da sintaxe? passar tudo o que não contém12345
?grep -v 12345
significa "remover qualquer linha correspondente12345
da correspondência". Portanto, você deve primeiro identificar o PID da sua própria sessão e usá-lo em vez de12345
.who
outop
ainda mostrar o número antigo de usuários assinados, mesmo ele deve mostrar apenas 1. Como isso pode ser forçado a ser atualizado?Se você listar processos para ver seus comandos e argumentos (como por exemplo,
ps -f
procps), deverá ver os processos sshd chamados, por exemplo:O terminal (
pts/7
) é a parte principal aqui - se você o comparar com o terminal atual (tty
), poderá ver qual é a sua sessão ativa. É claro que existem outras maneiras de fazer isso (como examinar o PID do shell em execução no momento e localizá-lo na árvore de processos), mas essa é provavelmente a mais fácil. Você pode usar algo nesse sentido:Você pode alimentar os PIDs para matar,
xargs
mas sempre certifique-se de não matar osshd
processo principal que lida com novas conexões .Em uma nota relacionada, lembre-se de que geralmente analisa a
ps
saída que está sujeita a erros (especialmente em vários sistemas) devido à variabilidade de seus formatos de saída (aqui mitigados em grande parte pelo uso de-o pid= -o command=
).fonte
Isso matará as sessões suspensas por mais de 2 dias. Pode ser colocado como um cron.
Isso matará todos, exceto a sua (última sessão ativa). Execute isso no terminal.
fonte