No comando lsof no Ubuntu/Debian, estou vendo muitas linhas como abaixo:
PROGRAM 829 root 140u sock 0,8 0t0 244182 protocol: TCP
Quais são essas linhas?
Eles podem ser resultados de tentativas fracassadas de conexão TCP?
Responder1
Esta linha é exibida quando lsof
não é possível encontrar informações adicionais sobre o soquete TCP: ele sabe que é um soquete TCP, mas não mais.
Há duas razões pelas quais posso pensar:
Improvável: o soquete ainda não está escutando nem conectando: ou seja, um servidor ou cliente usado, por exemplo
socket(AF_INET, SOCK_STREAM, 0)
para criar um soquete TCP, mas ainda não ligoulisten(2)
ouconnect(2)
. Isso pode ser causado por falta de recursos ou software com bugs.Muito provavelmente hoje: o processo visto por
lsof
é executado em outroespaço para nome de rede, normalmente em um contêiner (Docker, LXC, LXD ...) e, portanto,lsof
não tem acesso às informações relevantes e não as exibe.Você deve então executar
lsof
a partir do mesmo namespace de rede que o processo. Olsns
ensenter
comandos podem ajudar muito nisso. Para o seu caso, isso provavelmente funcionaria:nsenter -t 829 --net lsof -n -p 829
Em casos normais lsof
seria exibido IPv4
ou IPv6
em vez de sock
e teria informações adicionais, como porta de escuta ou endereços envolvidos. Mesmo uma conexão ainda em andamento seria exibida com os endereços envolvidos e, por exemplo SYN_SENT
, .