Como fazer um comando de execução infinita se matar quando certas condições são atendidas?

2

Estou executando um comando na linha de comando que gera infinitamente alguns dados e estou procurando por um dado em particular, então usei grep para encontrá-lo. Assim que eu obtiver os dados, quero que o comando se mate. Como faço para isso?

NOTE1: AND'ing kill $$ com grep não está finalizando o comando.

NOTA2: vi esta pergunta , que parece não funcionar no meu caso.

    
por user2555595 05.09.2014 / 11:11

2 respostas

2

Tente isso

loud_program | grep --max-count=NUM

então, de acordo com meu conhecimento limitado, loud_program recebe SIGPIPE porque está gravando em uma extremidade desconectada, que por sua vez pode terminar loud_program . Experimente com o seu programa, não tenho certeza se isso funciona para todos os programas.

    
por 05.09.2014 / 11:15
0

Você pode canalizar os resultados para um pager, como less . O buffer de entrada less impedirá que o comando gere muitos dados (ou seja, ele irá bloquear em algum momento até você descer mais), e assim que você sair do pager, os comandos terminarão automaticamente devido a um cano quebrado. Se por algum motivo os comandos (do pipeline) ainda estiverem em execução porque os dados não são gerados, você pode digitar Ctrl-C para finalizá-los.

    
por 05.09.2014 / 11:24