Здесь содержится модифицированная
версия 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.