
私の最初の質問の1つです。さらに説明や情報が必要な場合、または質問がここにあるべきものではない場合は、コメントしてください。
私は screen を使用してサーバー (この例では Minecraft サーバー) を自動的に起動しています。
次のような画面を表示しています
screen -S 'server_1' -d -m "java -Xmx4G -Xms4G -jar spigot.jar"
次にログファイルを設定し、ログ記録を有効にします。
screen -S 'server_1' -X logfile /srv/serverinstalls/1/stdout.txt
screen -S 'server_1' -X log
次に、stdout.txt の内容が NodeJS 経由で読み込まれます。
「cat stdout.txt」の出力は問題ないように見えますが、「less stdout.txt」でファイルを表示すると、すべての行が次のように始まります。
>ESC[2K^M
ここで、^M と ESC は制御文字です (^M は \r 文字です)。これは、サーバーが提供する対話型シェルのプロンプト ('>' で始まる) を screen がログに記録する方法だと思います。
これらの制御文字を省略し、シェルの対話型部分をログに記録しないように screen-command を構成する方法はありますか?
必要に応じて、ログファイルを読み取るたびに追加のコマンドを実行したり、NodeJS を使用して不要な文字を置き換えたりすることができますが、プロンプトはすべてのサーバーで同じようには表示されません。
私はDebian 9.9 (stretch) とscreen 4.05.00を使用しています
答え1
以下の方法を試したことのある人はいますか?
ansifilter
less -r
strings