Это проще сделать с дисплеем (wireshark )фильтром , чем с захватом (pcap )фильтром .
tshark -n -T fields -e dns.qry.name -f 'src port 53' -Y 'dns.qry.name contains "foo"'
См. справочную страницу pcap-filter
о том, что можно делать с фильтрами захвата. Это довольно ограничено, вам придется анализировать протокол вручную. Здесь, в качестве приближения, предполагается, что имя запроса всегда имеет размер 0x20 байт в пакете udp (для DNS через UDP )и известно, что имя запроса не должно превышать 253 байта :
$ printf foo | xxd -p
666f6f
$ tshark -n -T fields -e dns.qry.name -f "src port 53 and $(awk '
BEGIN{
for(i=0;i<250;i++) {
printf sep "(udp[%d]!=0&&((udp[%d:4]&0xffffff00)==0x666f6f00", i+20, i+20
c = c "))"; sep = "||"
}
print c
}')"
Вы можете проверить:
journalctl -u apache2
/var/log/apache2
ps
, top
, htop
, ntop
, iotop
или даже чтение каталогов /proc/PIDNUMMERS/
напрямую iptables
, lsof
иnmap
tcpdump
иwireshark
Это должно предоставить достаточно информации о статусе, чтобы занять вас на некоторое время...
Вы можете использовать скрипт (perl )для фильтрации и объединения всей этой информации, чтобы получить то, что вас действительно интересует.
Но :причиной зависания pid не всегда будет такой же. При использовании скрипта вы упустите важную информацию, настоятельно рекомендую проверить ее вручную.