2009-12-01 3 views

답변

7

lsof(8)을 사용할 수 있습니다. PID는 프로세스 ID이고 FD 당신이 관심있는 소켓의 파일 기술자 번호 경우이 작업을 수행 할 수 있습니다

lsof -a -p PID -i 4 -T f 

:

lsof -a -p PID -d FD -T f 

는 프로세스의 모든 IPv4의 소켓을 나열하려면 이것은 다른 정보들 중에서 소켓 옵션을 SO=과 함께 출력합니다. 옵션이 설정되지 않은 경우 빈 문자열이 표시되므로 SO=PQLEN=0 등의 문자가 표시됩니다. SO_BROADCAST을 테스트하려면 SO= 뒤에 문자열 SO_BROADCAST에 대한 grep 만 입력하십시오.

if lsof -a -p PID -d FD -T f | grep -q 'SO=[^=]*SO_BROADCAST'; then 
    # socket has SO_BROADCAST 
else 
    # it doesn't 
fi 
+2

내 시스템 (RHEL 5.3)에서 lsof의 "-T"플래그는 "q"및 "s"를 허용하지만 "f"는 허용하지 않습니다. 다른 해결책이 있습니까? – dimba

+0

또한 http://linux.die.net/man/1/fuser 또는'netstat (8)'http://linux.die.net/man/8/netstat를 시도해 볼 수도 있지만, fuser (1) lsof가 작동하지 않고 작동하지 않으면 시스템에서 운이 나쁠 수도 있습니다. –

2

리눅스에, 당신은 SO_BROADCAST 포함, 소켓 옵션을 검사 할 knetstat 커널 모듈을 사용할 수 있습니다.