GNU/Linux >> Tutoriels Linux >  >> Linux

Options de prise d'affichage

J'ai eu le même problème aujourd'hui; malheureusement, sur mon système, le -T possibilité de lsof n'accepte pas le f flag, et je ne voulais pas non plus construire le knetstat module noyau.

Heureusement, j'étais en mesure de pouvoir strace l'application lors de la configuration du socket, comme ceci :

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

Cela trace ./program arg1 arg2 , en écrivant la trace dans /tmp/log . Nous ne traçons que le setsockopt() appel système, qui est utilisé pour définir les options de socket. L'option -f fait strace trace également tous les processus enfants créés par le programme tracé.

Si vous avez de la chance, /tmp/log contiendra des lignes comme celle-ci :

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

Cela indique que le processus 18806 appelé setsockopt() sur FD 60 pour définir SO_KEEPALIVE à 1 (en l'activant) et que l'appel système a réussi avec le code de retour 0 .

Il est également possible de rattacher à un processus existant :

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

Vous pouvez vous détacher du processus en utilisant CTRL-C , et omettez le -o option et son argument pour envoyer la trace à stderr .


Sous Linux, vous pouvez utiliser le module du noyau knetstat pour inspecter les options de socket, y compris SO_BROADCAST .


Vous pouvez utiliser lsof(8) . Si PID est l'ID du processus et FD est le numéro de descripteur de fichier du socket qui vous intéresse, vous pouvez faire ceci :

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

Pour lister tous les sockets IPv4 d'un processus :

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

Cela imprimera les options de socket avec un SO= , entre autres informations. Notez que si aucune option n'est définie, vous obtiendrez la chaîne vide, vous verrez donc quelque chose comme SO=PQLEN=0 etc. Pour tester SO_BROADCAST , juste grep pour la chaîne SO_BROADCAST après le SO= , par exemple

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. Options ps utiles

  2. API de socket Tmux ?

  3. 7 Exemples de commande lsof sous Linux

  4. Commande Linux ls

  5. Options de la commande grub-install

Mes options de commande Linux préférées

Commande lsof sous Linux (10 exemples)

Afficher l'arbre de Noël animé dans le terminal

Plasma 5.20 et mise à l'échelle de l'affichage - Excellent

Guide pratique :programmation de sockets en Python

Qu'est-ce que Options + FollowSymLinks ?