Remove dados do buffer de fluxo STDIN de outra sessão TTY

3

Encontrei um problema outro dia enquanto executava várias tty sessões em janelas de terminal separadas. Eu estava executando um comando de acesso a disco caro e estava esperando que ele retornasse. Enquanto isso, eu estava trabalhando em outra sessão de tty em uma janela separada no meu ambiente gráfico de área de trabalho.

Inadvertidamente, concentrei-me no terminal que estava executando o comando de acesso ao disco (basicamente um comando cp ) e digitei o seguinte no terminal pensando que eu iria inseri-lo na minha outra janela:

Digite

Com base em this question Eu sabia que os dados estavam agora no buffer de fluxo de dados STDIN esperando para ser executado imediatamente após o retorno do primeiro comando cp . E como você sabe, eu apenas disse ao comando para rodar novamente: /.

A questão

Como eu tinha algum tempo (esse comando estava levando > 30 minutos para retornar), há uma maneira de liberar esses caracteres do buffer STDIN desse tty antes de reverter o processo em que estava acabamento?

Ou há outra maneira, além de tentar liberar dados do buffer de fluxo de arquivo de outra instância bash, que eu poderia evitar que os dados fossem avaliados assim que o processo que eu estava esperando fosse concluído?

    
por datUser 24.04.2015 / 15:08

2 respostas

3

Se o seu tty tiver o sinalizador noflsh desativado, você poderá verificar com

stty -a < /dev/pts/whatever | grep -e -noflsh

de outro tty, mas o padrão é que ele está desativado - então, digitar o caractere de interrupção, encerrar ou suspender liberará a fila de entrada. Então, se você digitar Ctrl-Z , então fg , ele suspenderá o comando atualmente em execução, liberará a entrada e retomará o comando.

    
por 24.04.2015 / 16:57
0

Provavelmente você deve mandar o SIGSTOP para o bash a fim de evitar que ele faça alguma coisa, e depois de terminar sua tarefa envie o SIGKILL para o bash.

Note que o SIGSTOP evita que o bash espere que sua tarefa seja finalizada e você terá um zumbi. Depois que o SIGKILL init consertar sua tarefa, o zumbi desaparecerá.

    
por 24.04.2015 / 15:18