Значения переменных не сохраняются между разными запусками одного и того же сценария. То есть, вы не можете сохранить PID вашей программы в переменной и ожидать, что переменная будет инициализирована этим значением при повторном запуске сценария.
Сохраните значение PID во временном файле:
if [...] ; then
sudo tcpdump -i eth0 ..... &
disown
echo $! > somefile.pid
echo "started"
else
cat somefile.pid | xargs -n 1 kill
echo "stopped"
fi
обратите внимание, что эта команда сохраняет sudo
PID, а не tcpdump
pid, что означает, что вам не нужно sudo
снова, чтобы убить его
Также, если вы хотите, чтобы команда в фоне проработала дольше, чем оболочка, выполняющая скрипт, вам следует отключить
ее сразу после запуска
Иногда новые ядра отказываются от поддержки старого оборудования, но, похоже, это не ваша проблема. Я использую Linux 4.9 на Xeon 2 ГГц без проблем. Но 2 ГБ ОЗУ — это немного для запуска современной среды рабочего стола Gnome или KDE. Он едва вмещает только Firefox. Вместо этого я рекомендую установить облегченную среду рабочего стола, например xfce, которая предоставляется на стандартном установочном носителе Debian. Я не рекомендую устанавливать старое программное обеспечение из дистрибутивов конца -из -жизни, потому что таким образом вы упустите поддержку безопасности.