Gnu-Screen

如何強制 GNU Screen 刷新其日誌文件?

  • March 25, 2020

我正在使用這樣的螢幕

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

環繞遊戲伺服器。我將他們的輸出記錄到一個文件中,並可以通過以下方式向他們發送輸入:

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

可以在配置文件中指定日誌文件刷新之間的超時時間(在我的情況下為 10 秒)。

我遇到的問題是我無法強制螢幕將輸出刷新到日誌文件。例如,在我向遊戲伺服器發送“狀態”命令後,遊戲伺服器會列印一些資訊,但至少需要 10 秒才能將這些資訊添加到日誌文件中。

我試過發送:

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

但它不會對此做出反應。我也試過flush 0但沒有運氣。

我不想總是以 1 秒的超時時間登錄;只有在收到命令後才真正需要它。請注意,我在這裡對性能持懷疑態度,因為會話畢竟執行的是遊戲伺服器。

如何強制螢幕將輸出刷新到日誌文件?有沒有辦法做我需要的(將輸出記錄到文件並將命令發送到輸入),而不是使用螢幕,也許使用 FIFO?

試試這個:

screen -r session1 -X 冒號“日誌文件刷新 1^M”

logfile flush 1實際上不是螢幕命令,而是colon。您傳遞的下一件事是必須引用的參數,最後的 ^M 實際上應該是 Ctrl-M。Ctrl-V 後跟 Ctrl-M 通常可以輸入實際的 Ctrl-M。

我和你有完全相同的需求。Logfile flush是發送到螢幕的有效命令 - 但是,它不需要引用,您也可以將其設置為 0 以進行即時刷新。

將您的線路更改為

screen -r session1 -p0 -X logfile flush 0

確保在完成從日誌文件中讀取後將其更改回來

screen -r session1 -p0 -X logfile flush 10

預設值為 10 秒,但您可以將其設置為您認為合適的任何值。

引用自:https://serverfault.com/questions/192432