top
Ubuntu Bionicの場合、プロセスにさまざまなデータを表示し、同様に自動的に更新しますが、表示するデータ(列)を指定するようにコマンドラインで設定できるツールはありますか?
答え1
procps
top
、Ubuntuの実装はおそらく最も構成可能なtop
実装です。
フィールドのリストを変更するには、を押しますf。フィールドの追加、フィールドの削除、順序の変更などができます。
色、レイアウト、複数ウィンドウの表示、上部ヘッダーなどを含め、さらに変更できます。
を押してこれらの設定を保存できますW。
これは消えます~/.toprc
(または~/.config/procps/toprc
最新バージョンでは)。
top
名前を付けて別のプロファイルとして保存できます。たとえば、実行可能ファイルへmytop
のtop
シンボリックリンクを作成し、それを呼び出すかtop
実行する(exec -a mytop top)
ことWで設定が保存されるため、~/.mytoprc
この方法でさまざまなバージョンを定義できますtop
。
答え2
ジレンマですか?
top
自動更新機能がありますが、表示する列を指定する方法はありません。ps
出力する列を相手に知らせることができますが、絶えず更新されません。
私はこの問題に対する解決策の一部です。
テーブル入力からデータをパイプし、スクロール可能な列形式で端末に全画面表示するツールが既にあります。これはconsole-flat-table-viewer
noshツールセットのコマンドです。関連区切り文字で区切られた標準入力から一定の間隔で一連のテーブルを提供します。ファイル区切り記号文字が表示され、継続的に更新されるディスプレイを提供します。
この点に注意してくださいいいえ良いwatch
。 watch
前の入力を受け入れます。 console-flat-table-viewer
その入力は次のようになると予想されます。テーブルは、UnicesおよびLinuxオペレーティングシステムで見られるよく知られているいくつかのフラットファイルエンコーディングの1つであり、ユーザーインターフェイスはそれを提供します。テーブルとして、タイトルとカーソルを含む行と列でソートされます。
メカニズムの他の部分は、まずプロセステーブルをフラットファイルにエクスポートし、間隔をあけて繰り返し出力を全体に分散させるツールです。ファイル区切り記号。ほぼ全部来ましたが、まだほぼ全部来ました。
top
「バッチ」モードでコマンドの出力を提供できます。
そしてトップ-bすべて| sed -e '1,8s/^/#/' -e $'1i\\n\\f' する 睡眠1 完了 コンソールプレーンビューア - タイトル数1
実際には、プロセステーブルではなく出力部分をsed
コメントに変換します。そうしないと、テーブルレイアウトが混乱する可能性があります。top
ファイル区切り記号。マニュアルでフォーマットtop
と呼ばれる出力に一致するテーブルエンコーディングでは、ファイル区切り文字は␌文字なので、削除しないようにエスケープする必要があります。 (ASCIIにはテーブルを理解する実際の␜文字がありますが、これは出力のエンコードではありません。)console-flat-table-viewer
space
sed
console-flat-table-viewer
ascii
top
テーブルの残りのデータの直前まで受信しないようにsed
ディスプレイのちらつきを減らすために␌文字を追加しました。代わりに、単に最初に呼び出すことですconsole-flat-table-viewer
。console-flat-table-viewer
これにより、␌とテーブルデータの間に時間間隔(空のテーブルが表示されている間)があるため、わずかにちらつきが発生しますprintf
。
また、出力を生成するコマンドがwhile
ループの条件に入るため、パイプが途切れると、シャットダウンconsole-flat-table-viewer
時にループは正常に終了します。
ただし、これは列の制御を提供しません。
あるいは、FreeBSDコマンドの出力を提供することもできますprocstat
。
そしてprintf '\f' ; する 睡眠1 完了 コンソールプレーンビューア - タイトル数1
これは、さまざまなオプションを使用して列の制限されたレベルの制御を提供しますが、きめ細かい制御は提供しません。また、いくつかのオプションがフィールドの途中でエスケープされていない空白を引き起こし、テーブル形式が壊れてしまうため、いくつかの問題があります。
BSDコマンドを使用できますps
。
そしてps -a -x -o "pid、ppid、user、log name、time、status、wchan、start、comm" | sed -e $'1i\\n\\f' する 睡眠1 完了 コンソールプレーンビューア - タイトル数1
Ubuntu LinuxのGNUライセンスコマンドにはps
他のコマンドライン構文があります。
これはする熱のきめ細かい制御のために再びフィールド内のスペースは正しくエスケープできません。
BSDには、1990年代に4.4BSD以降にこの問題を処理する方法があります。vis()
さまざまなBSDプレーンテーブル(例)/etc/fstab
に採用されているエンコードシステムです。console-flat-table-viewer
また、すでに解読する方法も知っています。ps
あるいは、どちらかprocstat
、好ましくは両方ともvis
出力をエンコードできることを非常に歓迎します。
console-flat-table-viewer
GUIユーザーにとって明確な次のステップは、同じ入力を使用し、パイプラインの入力側を同じに保ち、TUIの代わりにGUIを使用して継続的に更新されるテーブルを表示する(現在の仮想)ユーティリティを持つことです。
これにより、構成可能なツールとパイプラインが一緒に接続された柔軟なメカニズムを持つことができます。 ☺
追加読書
- ジョナサンデボインポラード(2019)。
console-flat-table-viewer
。 スナックガイド。ソフトウェア。 - 」ルートマップ」。スナックアイテム。 FreeBSD四半期ごとのステータスアップデート2018年第4四半期。
- ロバートNMワトソン(2017-01-14)。プログラム統計。 FreeBSD 共通コマンドマニュアル。
- メモ。 FreeBSD 共通コマンドマニュアル。 2018年3月13日。
- 見える。 FreeBSD 共通コマンドマニュアル。 2013年2月19日。
- https://unix.stackexchange.com/a/511530/5132