サーバーを実行していますが、このサーバーのログは、ファイルではなくターミナルに記録されます。このログを表示するためにlessを使用したいと思います。
node server.js | less
ログを表示するだけの場合は、プレスを使用します Shift+F ファイルの終わりに到達し、ログを監視し続けます。止めたいときは CTRL+C。
残念ながら、これによりサーバーも停止します。サーバーを停止せずにログの終わりの監視を停止したいだけです。
これを行う方法?
F
でless
モードを終了する方法が見つからないため、回避策を使用する必要があります。たとえば、出力をtmpファイルに保存し、代わりにそのtmpfileを監視します。
node server.js > tmpfile & less tmpfile
&
は、node.js
コマンドをバックグラウンドで実行します。つまり、less tmpfile
はすぐに開始され、tmpfileを追跡します。
less
になったら、押すことができます F フォローモードに入るが、今 Ctrl+C サーバーを強制終了するのではなく、フォローのみを停止します。好きなようにスクロールしてヒットできます F フォローを再開します。
通常、「Forward forever」モードを終了することは想定されていないようです。これは、手動でman less
を押すと入力するモードの名前です Shift+F。
しかし、とにかく通常の状態に戻す方法を少し汚いトリックを見つけました。ただし、コマンドが一時的にフリーズされるため、おそらく連続して実行されるサーバーに適しているかどうかはわかりません。
とにかく、ここにトリックがあります:
node server.js | less
を既に開始しており、 Shift+F 「Forward forever」モードに入ります。これでless
はキー押下に反応しなくなりました。
この状態では、押すことができます Ctrl+C サーバープロセスを強制終了し、を押してless
を終了できます Q (ただし、何らかの理由でジョブリストでコマンドを停止プロセスのままにします-続行するにはfg
を実行し、その後完全に終了する必要があります)、これはnot 私たちが欲しいもの。
代わりに、押すこともできます Ctrl+Z コマンドを停止(「フリーズ」)して、シェルプロンプトに戻ります。シェルコマンドfg
( "foreground ")コマンドをフォアグラウンドで実行し続けます。 node
サーバープロセスもこの短い時間中に一時停止されることに注意してください。これが受け入れられるかどうかを考慮する必要があります。
less
が前と同じようにフォアグラウンドで再び実行されるようになりました。はい、しかし魔法のように「Forward forever」モードではなくなりました。あなたが使用することができます矢印キーを再度上下にスクロールします。
残念ながら、less
はバッファの更新を完全に停止したようです。スクロールできるのは、コマンドを先に凍結した行までで、それ以上はできません。 node
サーバーはまだ実行中であり、出力を生成していますが、再度更新するにはless
を取得する必要があります。
私が見つけた最も簡単な方法は、less
'ヘルプ画面を開き、キーを押して再び閉じることです。 H そして Q 順次。今、すべてが再び正常に動作しているようです。
ただし、最もクリーンなソリューションは、おそらく terdon's answer に従い、less
を使用して出力を一時ファイルにリダイレクトし、ファイルを監視することです。
あなたの質問が言うように:
このサーバーは、ファイルではなくターミナルにログインします。
(temp)ログファイルを使用したくないと思います。おそらく、ログは巨大であるか、何らかの理由であります。
fifo
ファイル。私が思いついたのは、named pipe file
とも呼ばれるfifo
ファイルを使用することです。このファイルは、ログをより少なくパイプするためにのみ使用され、何も保存されません。
最初にfifo file
を作成します:
mkfifo mylog
サーバーを実行し、ログをこのファイルにリダイレクトします。
node server.js > mylog &
Lessを使用してログを読み取ります(-fはlessを使用してこの特殊ファイルを読み取ります)。
less -f mylog
これで使用できます shift+F フォローする CTRL+C フォローを停止しますが、サーバーはまだ実行中です。出力を再度フォローできます shift+F。
バックアップ計画:サーバーを停止した場合は、コマンド(node server.js > mylog &
)をファイルに挿入します(例:server.sh
)。次にnode server.js > mylog &
を実行する代わりにrun:bash server.sh > mylog &
を実行し、less -f mylog
を実行します。