Como posso forçar a tela do gnu a liberar seu arquivo de log?

1

Estou usando a tela assim:

screen -L -dm -S session1 -c "./game_server -options"

para envolver os servidores de jogos. Eu registro sua saída em um arquivo e posso enviá-los com:

screen -r session1 -p0 -X "stuff \"this into input^M\""

O tempo limite entre os flushes do arquivo de log pode ser especificado no arquivo de configuração (10 segundos no meu caso).

O problema que tenho é que não posso forçar a tela a liberar a saída para o arquivo de log. Por exemplo, depois de enviar um comando "status" para um servidor de jogo, o servidor do jogo imprime algumas informações, mas são necessários pelo menos 10 segundos para adicioná-lo ao arquivo de log. Eu tentei enviar:

screen -r session1 -p0 -X "logfile flush 1"

Mas isso não reage a isso. Eu também tentei flush 0 sem sorte. Eu não quero sempre registrar com um tempo limite de 1 segundo, só é realmente necessário depois de receber um comando. Note que estou paranóico com o desempenho aqui porque a sessão está executando um servidor de jogo, afinal.

Como posso forçar a tela a liberar a saída para o arquivo de log? Existe uma maneira de fazer o que eu preciso (log de saída para arquivo e enviar comandos para entrada) que não seja com tela, talvez com um fifo?

    
por Gipsy King 19.10.2010 / 12:39

1 resposta

2

Tente isto:

screen -r session1 -X colon "logfile flush 1^M"

logfile flush 1 não é realmente um comando de tela, mas colon é. A próxima coisa que você passa é o argumento que tem que ser citado e o ^ M no final deve ser um Ctrl-M. Ctrl-V seguido por Ctrl-M geralmente fará o truque para inserir um Ctrl-M real.

    
por 19.10.2010 / 13:04