Ваша команда sudo tcpdump
должна перейти в фоновый режим, добавив амперсанд &
к строке:
sudo tcpdump -i eth0 -w /media/usbhd-sd[b-c]1/abfrage2.pcap &
Строка pid1=$!
поместит PID команды sudo tcpdump
в переменную pid1
Если вы хотите убить процесс, вы должны использовать:
sudo kill $pid1
Вы использовали $$
, который представляет PID текущего запущенного процесса.
Поскольку вы используете это в другом скрипте, который вы, вероятно, будете вызывать несколько раз, все последующие запуски не будут иметь использованной переменной pid1
.
Чтобы получить PID в этой переменной, вы можете использовать:
pid1=$(pidof tcpdump)
в разделе else
вашего скрипта.
Или просто используйте:
sudo pkill tcpdump
Предполагая, что у вас запущена только одна копия tcpdump.
Еще одна вещь, о которой вам нужно позаботиться. Каждый раз, когда вы вызываете ваш скрипт и $TIMEEND
не равен $Zeit
, он будет запускать другой tcpdump
процесс. Лучшим решением было бы:
if [ "$TIMEEND" != "$Zeit" ] && [ "$(pidof tcpdump)" == "" ]
которое проверит и требование времени, и существование процесса tcpdump
.
Похоже, проблема была в драйвере адаптера Wi-Fi. Я успешно решил проблему, обновив ядро до последней версии (4.18 ), которая включена в репозиторий бэкпортов stretch -.
В Apt должны быть включены резервные источники
for Debian Stretch, append the following in /etc/apt/sources.list :
deb http://ftp.debian.org/debian stretch-backports main contrib non-free
deb-src http://ftp.debian.org/debian stretch-backports main contrib non-free
затем установите ядро :
sudo apt update && sudo apt -t stretch-backports install linux-image-4.18.0-0.bpo.1-amd64 linux-headers-4.18.0-0.bpo.1-amd64
и перезагрузитесь, чтобы загрузить новое ядро.