SEM usar linhas de comando de rede no linux, como saber a lista de portas abertas e o processo que as possui?

11

Eu quero saber quais portas são usadas pelos processos no embedded-linux. Como é simples o embedded-linux, não há linhas de comando de rede, como netstat, lsof. (existem apenas linhas de comando básicas, como cat, cp, echo, etc).

Uma solução parcial parece ser usar as linhas de comando "cat / proc / net / tcp" e "cat / proc / net / udp". No entanto, não tenho certeza se a lista impressa dessas linhas de comando mostra todas as portas em uso e a lista não mostra qual processo está vinculado a determinada porta .

Qualquer comentário seria apreciado.

    
por freddy 20.05.2014 / 09:40

1 resposta

15

Você deve conseguir encontrar todas as portas abertas em /proc/net/tcp e /proc/net/udp . Cada um desses arquivos tem uma coluna inode , que pode ser usada para encontrar o processo que possui esse soquete.

Quando tiver um número de inode, você poderá executar um comando ls, como ls -l /proc/*/fd/* | grep socket:.$INODE , para localizar os processos que usam esse soquete. Caso um processo tenha sido configurado com diferentes descritores de arquivo para diferentes threads, você pode precisar estender o comando para ls -l /proc/*/task/*/fd/* | grep socket:.$INODE para encontrá-los todos.

    
por 20.05.2014 / 09:47