비지 박스, netstat, 아니오 -p 0000) 내장

DreamBox에 BusyBox (BusyBox v1.01 (2008.12.19-21 : 31 + 0000) 내장 셸 (ash)) 가 매우 오래되었습니다 (왜 그런지 묻지 마십시오 ) . netstat를 사용하여 어떤 프로세스가 어떤 연결을 열 었는지 알고 싶습니다. 그러나 BusyBox의 netstat에 -p 옵션이 포함되어 있지 않다는 것을 알았습니다 . 어떤 프로세스가 해당 소켓을 열 었는지 (및 사용하고 있는지) 알아야 할 다른 가능성은 무엇입니까?



답변

에서 해당 정보를 약간 더 추악한 형태 (일명 16 진)로 찾을 수 있습니다 /proc/net/tcp. 여기에서 연결의 inode를 찾을 수 있습니다 /proc/$pid/fd/.

예를 들면 다음과 같습니다.

$ cat /proc/net/tcp
sl  local_address rem_address   st tx_queue rx_queue tr tm->when retrnsmt   uid  timeout inode
 0: 00000000:0016 00000000:0000 0A 00000000:00000000 00:00000000 00000000     0        0 6115 1 f5adc4c0 300 0 0 2 -1
...

(busybox netstat가 아닌 일반 netstat에서는이 -e옵션에 추가 정보도 제공됩니다.)

$ sudo ls -l /proc/2560/fd
...
lrwx------ 1 root root 64  7 jan 22.50 3 -> socket:[6115]

두 번째 단계에는 루트 액세스 권한이 필요합니다.

-p옵션 만큼 편리 하지는 않지만 바인드로 작동합니다. 필요한 경우 스크립트를 작성할 수 있습니다.


답변

Busybox를 다시 만들 기회가 없다면 도움이되지 않지만 누군가에게 도움이되는 경우 …

비지 박스는 지원하는 구성 옵션을 가지고 -p의 스위치 비지 박스를netstat . 네트워킹 유틸리티 → netstat → PID / 프로그램 이름 출력 활성화CONFIG_FEATURE_NETSTAT_PRG 를 통해 busybox menuconfig에서 선택한 옵션을 참조하십시오 .


답변

ss장치 가 있거나 장치를 사용할 수있는 경우 PID도 표시 할 수 있습니다.

ss -ltp # for TCP
ss -lup # for UDP


답변