비지 박스, netstat, 아니오 -p


10

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


lsof는 busybox 버전의 일부입니까?
Zoredache

불행히도.
a1337q

답변:


15

에서 해당 정보를 약간 더 추악한 형태 (일명 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옵션 만큼 편리 하지는 않지만 바인드로 작동합니다. 필요한 경우 스크립트를 작성할 수 있습니다.


멋지게 들리지만 netstat가 제대로 작동하지 않으면 -e 옵션을 사용하여 추가로 아무것도 출력하지 않습니다 . -e : Proto, Recv-Q, Send-Q, Local Address, Foreign Address, State의 6 열도 있습니다 . 포트와 방법이 있습니까? 포트를 볼 수 있습니다.
a1337q

네 말이 맞아, 나는 내 테스트를 엉망으로 만들었을 것이다. 작업 솔루션을 제공하기 위해 편집했습니다.
피터 아이젠 트라우트

2
두 번째 명령에 입력 한 숫자 "2560"을 어떻게 찾습니까? 그게 문제입니다.
ygoe

1
@ygoe 다음 6115과 같이 사용 하고 사용해야합니다 :find /proc/ -type l | grep /fd/ | xargs ls -la 2>/dev/null | grep 6115
Sam

3

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

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


0

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

ss -ltp # for TCP
ss -lup # for UDP
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.