arquivo de histórico cresce indefinidamente

1

Acredito que recebo o mesmo problema que esse cara . Estou no AIX, com o tcsh 6.12.00

Após (provavelmente) um mau logout, o arquivo de histórico cresceu exponencialmente, até que a cota parou (e quando a cota foi atingida, vários outros problemas ocorreram com trabalhos em lote que não puderam ser executados por causa disso). O conteúdo do arquivo de histórico era apenas:

 9917 host: path > 
    Use "logout" to logout.

repetido para todo o sempre (~ 50 milhões de vezes, na verdade). Note que

host: path >

é, na verdade, o prompt (que eu ofusquei um pouco para evitar spammers).

Agora, há dois problemas (possíveis separados) que ocorreram:

  1. por que essa saída foi para o arquivo .history (em vez disso, -dizer- minha tela quando saí)
  2. por que o limite do savehist não foi aplicado (era 5.000, por isso nunca deveria ser 9917)

A única coisa que posso pensar é em um processo cujo stdout (ou err) foi redirecionado para lá, mas isso é realmente estranho! Você tem alguma pista sobre esse problema?

Infelizmente, não consigo reproduzir o problema à vontade, o que ajudaria na depuração.

EDIT: sim, isso aconteceu com um login remoto (ssh), feito de um emulador de terminal X no Linux (a máquina remota é AIX, o local linux)

EDIT: a única coisa que posso pensar é um bug no tcsh, que, caso algo "ruim" ocorra no tty, use erroneamente o descritor de arquivos .history, que deveria estar aberto apenas para atualizar o arquivo. história. Mas é o caso? Não há nada mencionado aqui

    
por Davide 14.10.2009 / 19:17

1 resposta

1

Não há respostas definidas aqui, mas algumas idéias aleatórias que podem ou não ajudar:

A frase "Use" logout "para sair." soa muito como o tcsh tem um caractere EOF (^ D) e não gostou dele, pedindo para você digitar 'logout'. Então, de onde todos esses (hipotéticos) EOFs vieram?

Você, como a pessoa que tem um problema com isso no Cygwin, usa o shell via um emulador de terminal X de algum tipo (xterm, rxvt, o que for)? Eu estou querendo saber se o que está acontecendo é o emulador de terminal fecha, fechando assim o ptys que o processo de shell está se conectando, o que faz com que o shell leia uma série 'infinita' de caracteres EOF, no ponto em que gira no infinito. Talvez haja algum tipo de corrida aqui, onde o termo janela fecha a loja antes de realmente notificar o shell que a sessão está completa?

Uma coisa para tentar seria descobrir a) se tcsh na sua configuração realmente aceitar (ou rejeitar) EOF para sair, e b) se rejeitar, descobrir a alternância para permitir isso.

Eu sei que isso é especulativo, na melhor das hipóteses, eu não uso tcsh e meu conhecimento de X internals e tty emulation é (felizmente pela minha sanidade) bastante mínima. Mas um cenário como esse parece plausível, de qualquer forma.

    
por 14.10.2009 / 21:12