GNU/Linux >> Znalost Linux >  >> Linux

Možnosti zásuvek displeje

Dnes jsem měl stejný problém; bohužel v mém systému -T možnost lsof nepřijímá f flag a také jsem nechtěl vytvářet knetstat modul jádra.

Naštěstí jsem byl v pozici, kdy jsem mohl strace aplikaci, když nastavovala soket, takto:

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

To sleduje ./program arg1 arg2 , zapsat trasování do /tmp/log . Sledujeme pouze setsockopt() systémové volání, které se používá k nastavení voleb soketu. Možnost -f dělá strace také sledovat všechny podřízené procesy vytvořené sledovaným programem.

Pokud budete mít štěstí, /tmp/log bude obsahovat řádky jako tento:

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

To znamená, že proces 18806 s názvem setsockopt() na FD 60 nastavte SO_KEEPALIVE na 1 (jeho povolení) a že systémové volání bylo úspěšné s návratovým kódem 0 .

Je také možné připojit k existujícímu procesu:

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

Z procesu se můžete odpojit pomocí CTRL-C a vynechejte -o volba a její argument pro odeslání trasování na stderr .


V Linuxu můžete použít modul jádra knetstat ke kontrole voleb soketu, včetně SO_BROADCAST .


Můžete použít lsof(8) . Pokud PID je ID procesu a FD je číslo deskriptoru souboru soketu, o který máte zájem, můžete provést toto:

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

Seznam všech IPv4 soketů procesu:

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

Tím se vytisknou možnosti soketu s SO= , mimo jiné informace. Všimněte si, že pokud nejsou nastaveny žádné možnosti, dostanete prázdný řetězec, takže uvidíte něco jako SO=PQLEN=0 atd. Chcete-li otestovat SO_BROADCAST , stačí grep pro řetězec SO_BROADCAST za SO= , např.

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 možností filtrování síťového provozu tcpdump

  2. 6 pokročilých možností formátování tcpdump

  3. Užitečné možnosti ps

  1. Zobrazení typů databází MySQL v bash

  2. Jak na to:Programování soketů v Pythonu

  3. Příkaz Linux ls

  1. Tmux Socket Api?

  2. 7 Příklady příkazu lsof v Linuxu

  3. Možnosti příkazu grub-install