Gnu-Screen
如何強制 GNU Screen 刷新其日誌文件?
我正在使用這樣的螢幕:
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 秒,但您可以將其設置為您認為合適的任何值。