Enviando sinais para processos de execução longa (AWK, DD)

3

Estou familiarizado que o comando DD não produz saída durante a execução. No entanto, se eu enviar um sinal USR1 para ele, ele pode imprimir o estado atual.

Posso fazer o mesmo com o AWK? Imprime suas variáveis, registra signal_handler?

    
por ulicar 16.06.2015 / 18:22

1 resposta

5

Você não pode confiar nesse comportamento em todas as plataformas, mesmo para dd . POSIX não especifica uma resposta a SIGUSR1 e, de fato, seu processo dd morrerá se você tenta em OSX ou BSD , ou mesmo às vezes em Linux embarcado (Busybox) . Usar SIGUSR1 on dd dessa maneira parece ser uma extensão do GNU. Na prática, na maioria dos sistemas Linux de desktop, você poderá fazer isso.

Da mesma forma, se você estiver usando o GNU awk , você pode poder enviar um SIGUSR1 para obter algumas informações de estado interno específicas do GNU. Neste caso, não imprime para stdout, mas para um arquivo. Versões do Awk compatíveis com isso são GNU awk 4.1.0 e posterior se executar com o sinalizador -p ( --profile ) ou 3.1 e posterior quando compilado e executado como pgawk .

Para detalhes sobre o que os sinais fazem, veja a página gawk man ( versão 3.1 ou versão 4.1 ), e procure por "Sinais".

Note que é menos certo que o seu desktop Linux esteja executando o GNU awk do que o GNU dd ; O mawk é outro awk que vi rodando no desktop Linux.

    
por 16.06.2015 / 18:53