Я не уверен, что вы пытаетесь выполнить sh, продолжая запуск самого сценария запуска, но вот подход, который, я думаю, завершает то, что вы пытаетесь сделать, а именно запуск tcpdump
и пусть он продолжает работать невосприимчивым к зависаниям через nohup
. Я немного упростил вещи в иллюстративных целях - не стесняйтесь добавлять любые переменные обратно по своему усмотрению, такие как nohup.out
выходной каталог, TIMESTAMP
, et c.
Script # 1 : tcpdump_start. sh
#!/bin/sh
rm -f nohup.out
nohup /usr/sbin/tcpdump -ni eth0 -s 65535 -w file_result.pcap &
# Write tcpdump's PID to a file
echo $! > /var/run/tcpdump.pid
Скрипт № 2: tcpdump_stop. sh
#!/bin/sh
if [ -f /var/run/tcpdump.pid ]
then
kill `cat /var/run/tcpdump.pid`
echo tcpdump `cat /var/run/tcpdump.pid` killed.
rm -f /var/run/tcpdump.pid
else
echo tcpdump not running.
fi
Для запуска tcpdump , просто запустите tcpdump_start.sh
.
Чтобы остановить экземпляр tcpdump , запущенный с tcpdump_start.sh
, просто запустите tcpdump_stop.sh
.
Захваченные пакеты будут записаны в файл file_result.pcap , и да, это файл pcap, а не текстовый файл, поэтому он помогает назвать его с соответствующим расширением файла. Статистика tcpdump будет записана в файл nohup.out при завершении работы tcpdump .