2009-12-01 12 views
8

¿Cómo puedo ver desde la consola qué opciones de socket están configuradas? En particular, . Me interesa saber si SO_BROADCAST está configurado.Opciones de socket de pantalla

Respuesta

7

Puede utilizar lsof(8). Si PID es el ID de proceso y FD es el número de descriptor de archivo del socket al que le interesa, usted puede hacer esto:

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

para listar todos los enchufes IPv4 de un proceso:

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

Esto imprimirá las opciones de socket con un SO=, entre otra información. Tenga en cuenta que si no se establecen opciones, obtendrá la cadena vacía, por lo que verá algo así como SO=PQLEN=0 etc. Para la prueba de SO_BROADCAST, simplemente grep para la cadena SO_BROADCAST después de la SO=, por ejemplo,

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

En mi sistema (RHEL 5.3) bandera "-T" de lsof puede aceptar "q" y "s", pero no "f". ¿Hay alguna otra solución? – dimba

+0

También puedes probar 'fuser (1)' http://linux.die.net/man/1/fuser o 'netstat (8)' http://linux.die.net/man/8/netstat, pero si lsof no funciona y no funcionan, es posible que no tenga suerte en su sistema. –

2

En Linux, puede utilizar el módulo del kernel para inspeccionar knetstat opciones de conector, incluyendo SO_BROADCAST.

Cuestiones relacionadas