追加読書

追加読書

topUbuntu Bionicの場合、プロセスにさまざまなデータを表示し、同様に自動的に更新しますが、表示するデータ(列)を指定するようにコマンドラインで設定できるツールはありますか?

答え1

procps top、Ubuntuの実装はおそらく最も構成可能なtop実装です。

フィールドのリストを変更するには、を押しますf。フィールドの追加、フィールドの削除、順序の変更などができます。

色、レイアウト、複数ウィンドウの表示、上部ヘッダーなどを含め、さらに変更できます。

を押してこれらの設定を保存できますW

これは消えます~/.toprc(または~/.config/procps/toprc最新バージョンでは)。

top名前を付けて別のプロファイルとして保存できます。たとえば、実行可能ファイルへmytoptopシンボリックリンクを作成し、それを呼び出すかtop実行する(exec -a mytop top)ことWで設定が保存されるため、~/.mytoprcこの方法でさまざまなバージョンを定義できますtop

答え2

ジレンマですか?

  • top自動更新機能がありますが、表示する列を指定する方法はありません。
  • ps出力する列を相手に知らせることができますが、絶えず更新されません。

私はこの問題に対する解決策の一部です。

テーブル入力からデータをパイプし、スクロール可能な列形式で端末に全画面表示するツールが既にあります。これはconsole-flat-table-viewernoshツールセットのコマンドです。関連区切り文字で区切られた標準入力から一定の間隔で一連のテーブルを提供します。ファイル区切り記号文字が表示され、継続的に更新されるディスプレイを提供します。

この点に注意してくださいいいえ良いwatchwatch前の入力を受け入れます。 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-viewerspacesedconsole-flat-table-viewerasciitop

テーブルの残りのデータの直前まで受信しないようにsedディスプレイのちらつきを減らすために␌文字を追加しました。代わりに、単に最初に呼び出すことですconsole-flat-table-viewerconsole-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-viewerGUIユーザーにとって明確な次のステップは、同じ入力を使用し、パイプラインの入力側を同じに保ち、TUIの代わりにGUIを使用して継続的に更新されるテーブルを表示する(現在の仮想)ユーティリティを持つことです。

これにより、構成可能なツールとパイプラインが一緒に接続された柔軟なメカニズムを持つことができます。 ☺

追加読書

関連情報