Scusami se questo non è il miglior forum per questa domanda, ma sembra più rilevante per il kernel che per la programmazione stessa.
Sto scrivendo uno script che richiede al sistema porte aperte in modo da poter rappresentare graficamente e monitorare le statistiche. Per questo, sto usando il comando "ss" dal pacchetto iproute. Se esegui ss -s|grep estab
, riceverai un output simile al seguente:
TCP: 296 (estab 6, closed 238, orphaned 0, synrecv 0, timewait 238/0), ports 0
La mia domanda ha a che fare con la variabile timewait, che mostra i socket calcolati nello stato TIME_WAIT. Quando ho provato a capire a quale numero si riferiva dopo la barra, è diventata un'avventura vorticosa di ricerca del codice sorgente che alla fine mi ha portato a trovare il seguente frammento:
printf("TCP: %d (estab %d, closed %d, orphaned %d, synrecv %d, timewait %d/%d), ports %d\n",
s.tcp_total + slabstat.tcp_syns + s.tcp_tws,
sn.tcp_estab,
s.tcp_total - (s.tcp4_hashed+s.tcp6_hashed-s.tcp_tws),
s.tcp_orphans,
slabstat.tcp_syns,
s.tcp_tws, slabstat.tcp_tws,
slabstat.tcp_ports
);
Devo ammettere che la mia ricerca di ciò che "slabstat" avrebbe dovuto significare alla fine ha portato alla mia conoscenza delle cache delle lastre e della loro interfaccia di reportistica su / proc / slabinfo.
La domanda: cosa c'entra la slabtable con i calcoli del socket TIME_WAIT? Non riesco a capire perché questo numero venga segnalato, poiché ogni volta che eseguo il comando su tutti i server su cui l'ho provato, il numero è sempre stato zero.