GNU/Linux >> Linux Esercitazione >  >> Linux

Visualizza le opzioni della presa

Ho avuto lo stesso problema oggi; sfortunatamente, sul mio sistema, il -T opzione di lsof non accetta il f flag, e inoltre non volevo creare il knetstat modulo del kernel.

Fortunatamente, ero nella posizione di poter strace l'applicazione mentre stava configurando il socket, in questo modo:

strace -e trace=setsockopt -f -o /tmp/log ./program arg1 arg2

Questo traccia ./program arg1 arg2 , scrivendo la traccia in /tmp/log . Tracciamo solo il setsockopt() chiamata di sistema, che viene utilizzata per impostare le opzioni del socket. L'opzione -f fa strace traccia anche qualsiasi processo figlio creato dal programma tracciato.

Se sei fortunato, /tmp/log conterrà righe come questa:

18806 setsockopt(60, SOL_SOCKET, SO_KEEPALIVE, [1], 4) = 0

Ciò indica che il processo 18806 chiamato setsockopt() su FD 60 per impostare SO_KEEPALIVE a 1 (abilitandolo) e che la chiamata di sistema è riuscita con codice di ritorno 0 .

È anche possibile collegarsi a un processo esistente:

strace -e trace=setsockopt -f -o /tmp/log -p PID

Puoi staccarti dal processo usando CTRL-C e ometti -o opzione e il suo argomento per inviare la traccia a stderr .


Su Linux, puoi utilizzare il modulo del kernel knetstat per ispezionare le opzioni del socket, incluso SO_BROADCAST .


Puoi usare lsof(8) . Se PID è l'ID del processo e FD è il numero del descrittore di file del socket che ti interessa, puoi farlo:

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

Per elencare tutti i socket IPv4 di un processo:

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

Questo stamperà le opzioni del socket con un SO= , tra le altre informazioni. Nota che se non sono impostate opzioni, otterrai la stringa vuota, quindi vedrai qualcosa come SO=PQLEN=0 ecc. Per testare SO_BROADCAST , solo grep per la stringa SO_BROADCAST dopo il SO= , ad esempio

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

Linux
  1. 6 opzioni di filtro del traffico di rete tcpdump

  2. Opzioni utili per ps

  3. Visualizza i tipi di database MySQL in bash

  4. Tmux Socket Api?

  5. Procedura:programmazione socket in Python

Le mie opzioni di comando principali di Linux preferite

lsof Command in Linux (10 esempi)

Mostra l'albero di Natale animato nel terminale

Plasma 5.20 e ridimensionamento del display - Eccellente

Cos'è Opzioni +FollowSymLinks?

Sniffa il socket del dominio UNIX