'nohup top'が出力ラインをブロックするのはなぜですか?

'nohup top'が出力ラインをブロックするのはなぜですか?

nohup定期的に(15秒ごとに)出力を記録したいと思います。topこれを行うには、SSHを使用してサーバーにログインし、次のコマンドを実行して再度ログアウトします。

nohup top -b -c -d15 &

この-cフラグはコマンドに関する追加情報を提供しますが、生成されたnohup.outファイルではこの情報が82文字に短縮されます。

したがって、次のように出力しないでください。

10484 daemon   20   0 68924 5556 2292 S  0.0  0.0   0:00.06 /opt/CollabNet_Subversion/bin/httpd -D csvn_installed -k start

...nohup.out次のようになります。

10484 daemon   20   0 68924 5556 2292 S  0.0  0.0   0:00.06 /opt/CollabNet_Subv

nohup剪定の結果を防ぐ方法はtop

答え1

top使用する出力幅-w(最大512列)を指定するには、パラメータを使用する必要があります。

nohup top -b -c -d15 -w512 &

あなたのバージョンがtopそれをサポートしていない場合は、-w環境変数を使用して同じ効果を得ることができますCOLUMNS

COLUMNS=512 nohup top -b -c -d15 &

説明どおり狡猾なtopこの場合、端末に出力が行われないため、使用する端末の幅を決定できず、安全なデフォルト値に戻ります。

答え2

特定のバージョンで使用する必要がある出力を知らせる明示的な方法がなければ、topこれを行うことはできません。私が知っている実装では、top出力幅の指定は許可されません。

これnohupにより、プログラムは端末の代わりに通常のファイルを使用して実行されますtopstdout

したがって、toptty幅は検索できず、標準の80列に置き換えられます。

関連情報