Enviar Ctrl-C para o comando canalizado

2

Usando um comando como:

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

Se eu pressionar Ctrl - C para parar o comando tcpdump , acabo com um arquivo bzip2 quebrado (estou assumindo porque eu terminei ambos processos).

Eu sei que posso enviar kill 'pidof tcpdump' , mas gostaria de poder parar isso sem abrir outra conexão SSH.

Existe uma maneira de enviar Ctrl - C somente para um dos subprocessos ( tcpdump neste caso)?

    
por Vargas 09.07.2015 / 21:16

2 respostas

2

Embora você possa suspender bg e eliminar o processo na mesma conexão ssh, uma solução melhor pode estar usando a funcionalidade de compactação integrada do tcpdump.

Use a opção -z incorporada para o tcpdump, em vez de canalizar para o bzip. Isso só comprimirá (e salvará) as seções completas (rotações).

-z postrotate-command

Used in conjunction with the -C or -G options, this will make tcpdump run " postrotate-command file " where file is the savefile being closed after each rotation. For example, specifying -z gzip or -z bzip2 will compress each savefile using gzip or bzip2.

Fonte: link

    
por 09.07.2015 / 21:39
0

O comando completo baseado na sugestão do @ Steven será:

tcpdump -w capture_file -z bzip2

Em seguida, matar o tcpdump não deixará um arquivo zip corrompido. A alternativa é, claro, usar Ctrl-Z, fg e bg para realizar algo semelhante.

Eu não tinha notado a opção -z até que vi a sugestão do @ Steven.

    
por 09.07.2015 / 22:00