2

Используя команду как:

tcpdump -w - | bzip2 -c > capture.cap.bz2

Если я нажимаю Ctrl- C, чтобы остановить команду tcpdump , я получаю поврежденный архив bzip2 (я полагаю, потому что я завершил оба процесса).

Я знаю, что могу отправить kill `pidof tcpdump` , но я хотел бы иметь возможность остановить это, не открывая другое соединение SSH.

Есть ли способ отправить Ctrl- C только в один из подпроцессов (в данном случае tcpdump )?

2 ответа2

2

Хотя вы можете приостановить, bg и завершить процесс в одном и том же ssh-соединении, лучшим решением может быть использование встроенной функции сжатия tcpdump.

Используйте встроенную опцию -z для tcpdump вместо того, чтобы отправлять в bzip. Это будет только сжимать (и сохранять) полные сечения (вращения).

-z postrotate-команда

Используемый вместе с опциями -C или -G , это заставит tcpdump запускать « файл команды postrotate », где файл - это файл сохранения, закрываемый после каждого вращения. Например, указание -z gzip или -z bzip2 будет сжимать каждый файл сохранения с помощью gzip или bzip2.

Источник: http://www.tcpdump.org/tcpdump_man.html

0

Полная команда, основанная на предложении @ Steven, будет:

tcpdump -w capture_file -z bzip2

Тогда уничтожение tcpdump не приведет к повреждению zip-файла. Альтернатива, конечно, использует Ctrl-Z, fg и bg для достижения чего-то похожего.

Я не заметил опцию -z, пока не увидел предложение @ Steven.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .