Eu quero saber quais portas são usadas por quais processos no Embedded-Linux. Como é simples o linux incorporado, não há linhas de comando de rede como netstat, lsof. (apenas existem linhas de comando básicas, como cat, cp, eco, 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 de que a lista impressa dessas linhas de comando mostre todas as portas em uso e a lista não mostra qual processo está vinculado a determinada porta .
Quaisquer comentários serão apreciados.
linux
networking
process
tcp
freddy
fonte
fonte
Respostas:
Você deve encontrar todas as portas abertas em
/proc/net/tcp
e/proc/net/udp
. Cada um desses arquivos possui umainode
coluna, que pode ser usada para encontrar o processo que possui esse soquete.Depois de ter um número de inode, você pode executar um comando ls,
ls -l /proc/*/fd/* | grep socket:.$INODE
para encontrar os processos usando esse soquete. Caso um processo tenha sido configurado com descritores de arquivos diferentes para diferentes threads, pode ser necessário estender o comandols -l /proc/*/task/*/fd/* | grep socket:.$INODE
para encontrar todos eles.fonte
find /proc -lname "socket:\[$INODE\]" 2> /dev/null
Para encontrar o INODES para qualquer porta, execute o comando abaixo
Use qualquer saída INODE do comando acima para encontrar o PID associado como abaixo
aqui $ INODE é o valor de qualquer INODE
Em um comando de linha única, podemos verificar se alguma porta está aberta e associada a qualquer PID conforme abaixo
fonte