netstat - версия от DaqGroup

Здесь содержится модифицированная версия netstat.c,
скомпилированная специально для crwdaq.

Оригинальная версия не устраивала тем, что в ней нет возможности
задать задержку в режиме непрерывного опроса - она равна ровно
1 секунде. В модифицированной версии задержку между опросами
можно задавать через переменную окружения NETSTAT_DELAY.
Это позволяет (резко) снизить нагрузку на процессор.

С помощью команды unix можно использовать как стандартную
программу netstat, так и модифицированную версию netstat:

netstat -tuan4p              # вызывается стандартная версия
unix netstat -tuan4p         # вызывается модифицированная версия

Чтобы удостовериться в модифицированной версии, надо вызывать
команду unix netstat --version. В модифицированной версии
в выводе присутствует строка

NB: That is special DaqGroup (crwdaq) edition with NETSTAT_DELAY support!

соответственно можно проверить модифицированную версию так:

if unix netstat --version | grep '(crwdaq)'; then
 echo "Это модифицированная версия.";
fi;

Суть модификации

В режиме -c (–continuous) в конце каждого цикла опроса
вместо sleep(1) делается sleep(n), где значение n
берется из переменной окружения NETSTAT_DELAY, если она указана.
Если не указана, используется старое значение 1 (секунда).
Кроме того, в конце цикла печатается метка времени вида:

# netstat: updated at 2026.09.16-00:12:49

Кроме того, при запуске из среды пакета crwdaq программа начинает
отслеживать процесс crwdaq (по ссылке $CRW_DAQ_SYS_EXE_PID).
Если этот процесс завершился, программа (также) прекращает работу.

Если программа запущена из среды пакета crwdaq и пакет (ещё) работает,
в конце цикла печатается сообщение вида:

# parent PID 2579615 (crwdaq) is RUNNING

При завершении (родительского) пакета crwdaq печатается сообщение вида:

# parent PID 2579615 (crwdaq) is STOPPED

Таким образом, программа автоматически завершается вместе со своим
родительским процессом crwdaq.

Модификации кода netstat.c помечены маркерами:
DaqGroup++ (начало) и DaqGroup-- (конец).


Пример использования

# Выводить статистику каждые 5 секунд
sudo env NETSTAT_DELAY=5 unix netstat -tuan4pc

При использовании модифицированной программы надо либо задавать (полный) путь,
либо вызывать её через команду unix, чтобы не путать модифицированную
версию программы со стандартной версией netstat.

Пример вывода:

Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      2422418/cupsd       
tcp        0      0 127.0.0.1:3050          0.0.0.0:*               LISTEN      1549/firebird       
udp        0      0 127.0.0.1:177           0.0.0.0:*                           2356/fly-dm         
# netstat: updated at 2026.09.16-00:13:49

Маркер # в начале строки можно использовать как признак конца блока вывода в цикле опроса.


Опции компиляции

По команде make config; при компиляции были установлены такие опции:

rm -f -- config.h
Configuring the Linux net-tools (NET-3 Base Utilities)...


######################################################
Notice: ifconfig and route are now installed into /bin
######################################################

*
*
*              Internationalization
*
* The net-tools package has currently been translated to French,
* German and Brazilian Portugese.  Other translations are, of
* course, welcome.  Answer `n' here if you have no support for
* internationalization on your system.
*
Does your system support GNU gettext? (I18N) [y] 
*
*
*             Protocol Families.
*
UNIX protocol family (HAVE_AFUNIX) [y] 
INET (TCP/IP) protocol family (HAVE_AFINET) [y] 
INET6 (IPv6) protocol family (HAVE_AFINET6) [y] 
Novell IPX/SPX protocol family (HAVE_AFIPX) [y] 
Appletalk DDP protocol family (HAVE_AFATALK) [y] 
AX25 (packet radio) protocol family (HAVE_AFAX25) [y] 
NET/ROM (packet radio) protocol family (HAVE_AFNETROM) [y] 
Rose (packet radio) protocol family (HAVE_AFROSE) [y] 
X.25 (CCITT) protocol family (HAVE_AFX25) [y] 
Econet protocol family (HAVE_AFECONET) [y] 
DECnet protocol family (HAVE_AFDECnet) [n] 
Ash protocol family (HAVE_AFASH) [y] 
Bluetooth protocol family (HAVE_AFBLUETOOTH) [n] 
*
*
*            Device Hardware types.
*
Ethernet (generic) support (HAVE_HWETHER) [y] 
ARCnet support (HAVE_HWARC) [y] 
SLIP (serial line) support (HAVE_HWSLIP) [y] 
PPP (serial line) support (HAVE_HWPPP) [y] 
IPIP Tunnel support (HAVE_HWTUNNEL) [y] 
STRIP (Metricom radio) support (HAVE_HWSTRIP) [n] 
Token ring (generic) support (HAVE_HWTR) [n] 
AX25 (packet radio) support (HAVE_HWAX25) [y] 
Rose (packet radio) support (HAVE_HWROSE) [y] 
NET/ROM (packet radio) support (HAVE_HWNETROM) [y] 
X.25 (generic) support (HAVE_HWX25) [y] 
DLCI/FRAD (frame relay) support (HAVE_HWFR) [y] 
SIT (IPv6-in-IPv4) support (HAVE_HWSIT) [y] 
FDDI (generic) support (HAVE_HWFDDI) [y] 
HIPPI (generic) support (HAVE_HWHIPPI) [y] 
Ash hardware support (HAVE_HWASH) [y] 
(Cisco)-HDLC/LAPB support (HAVE_HWHDLCLAPB) [y] 
IrDA support (HAVE_HWIRDA) [y] 
Econet hardware support (HAVE_HWEC) [y] 
Generic EUI-64 hardware support (HAVE_HWEUI64) [y] 
InfiniBand hardware support (HAVE_HWIB) [y] 
*
*
*           Other Features.
*
IP Masquerading support (HAVE_FW_MASQUERADE) [y] 
Build arp and rarp (HAVE_ARP_TOOLS) [y] 
Build hostname (HAVE_HOSTNAME_TOOLS) [y] 
Install hostname NIS/YP symlinks (HAVE_HOSTNAME_SYMLINKS) [y] 
Build iptunnel and ipmaddr (HAVE_IP_TOOLS) [y] 
Build mii-tool (HAVE_MII) [y] 
Build plipconfig (HAVE_PLIP_TOOLS) [y] 
Build slattach (HAVE_SERIAL_TOOLS) [y] 
SELinux support (HAVE_SELINUX) [y] 

Отключены старые или ненужные (для нас) протоколы DECnet, Bluetooth, STRIP, Token ring.