Normalmente, todos os processos em um pipeline são executados no mesmo grupo de processos , fazendo com que todos recebam o sinal. Você pode usar setsid foo | less
para executar foo
em um pgrp diferente.
Costumo transmitir a saída do programa para menos, por exemplo,
produce_output | less
Isso funciona muito bem, até produce_output
produzir grandes quantidades de saída. Se eu procurar algum texto que esteja no arquivo, menos relatórios
Calculating line numbers... (interrupt to abort)
Se eu interromper com Control + C, ele também mata produce_output
, o que impede que ele produza mais saída. Existe alguma maneira de enviar a interrupção para menos, de modo que produce_output
continue em execução?
Eu sei que posso usar kill -INT less_process
, mas acho que deve haver uma solução melhor.
Você pode desativar números de linha com o
-n or --line-numbers
opção .
produce_output | less -n
Ao trabalhar com grandes quantidades de resultados, achei muito útil enviar a saída para um arquivo e usar tail -f
ou less +F
para assistir, por exemplo:
produce_output > out 2>&1 & less +F out
A sintaxe 2>&1
certifica-se de que stdout e stderr vão para out
--- remova isso se você quiser apenas que o stdout vá para o arquivo. Desta forma, você pode inspecionar a saída de várias maneiras (mesmo de uma máquina diferente) sem ter que mexer com o programa que produz a saída.
Observe que 2>&1
pode ser bash-específico (não tenho certeza). Certifique-se de ter espaço em disco suficiente para o arquivo de saída: -)
Você também pode fazer isso:
less +F -f <(produce_output)