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