バッチモードでtopコマンドを実行する方法

バッチモードでtopコマンドを実行する方法

top コマンドは、Linux システムのパフォーマンスを監視するために誰もが使用している最適なコマンドです。いくつかの操作を除いて、top コマンドの操作のほとんどはすでにご存知でしょう。私が間違っていなければ、バッチ モードもその 1 つです。

この操作は主にスクリプト作成に使用されるため、ほとんどのスクリプト作成者と開発者はこれを知っています。

ご存知ない方もご心配なく、ここで説明します。

top コマンドのバッチモードとは何ですか?

バッチ モードでは、top コマンドの出力を別のプログラムまたはファイルに送信できます。

このモードでは、top コマンドは入力を受け入れず、-n オプションで指定した反復回数に達するまで実行を続けます。

Linux サーバーのパフォーマンスの問題をトラブルシューティングする場合は、top コマンドの出力を正しく理解する必要があります。

1) topコマンドをバッチモードで実行する方法

デフォルトでは、top コマンドは出力を CPU 使用率でソートします。そのため、次のコマンドをバッチ モードで実行すると、同じことが行われ、最初の 35 行が出力されます。

# トップ -bc | ヘッド -35
トップ - 06:41:14 8 日間稼働、20:24、ユーザー 1 人、負荷平均: 0.87、0.77、0.81
タスク: 合計 139、実行中 1、スリープ中 136、停止中 0、ゾンビ 2
%CPU: 0.0 us、3.2 sy、0.0 ni、96.8 id、0.0 wa、0.0 hi、0.0 si、0.0 st
KiB メモリ: 合計 3880940、空き 1595932、使用中 886736、バフ/キャッシュ 1398272
KiB スワップ: 合計 1048572、空き 514640、使用済み 533932。使用可能なメモリ 2648472
PID ユーザー PR NI 仮想リソース SHR S %CPU %MEM 時間+ コマンド
   1 ルート 20 0 191144 2800 1596 S 0.0 0.1 5:43.63 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
   2 ルート 20 0 0 0 0 S 0.0 0.0 0:00.32 [kthreadd]
   3 ルート 20 0 0 0 0 S 0.0 0.0 0:28.10 [ksoftirqd/0]
   5 ルート 0 -20 0 0 0 S 0.0 0.0 0:00.00 [kworker/0:0H]
   7 ルート rt 0 0 0 0 S 0.0 0.0 0:33.96 [移行/0]
   8 ルート 20 0 0 0 0 S 0.0 0.0 0:00.00 [rcu_bh]
   9 ルート 20 0 0 0 0 S 0.0 0.0 63:05.12 [rcu_sched]
  10 ルート 0 -20 0 0 0 S 0.0 0.0 0:00.00 [lru-add-drain]
  11 ルート rt 0 0 0 0 S 0.0 0.0 0:08.79 [ウォッチドッグ/0]
  12 ルート rt 0 0 0 0 S 0.0 0.0 0:08.82 [ウォッチドッグ/1]
  13 ルート rt 0 0 0 0 S 0.0 0.0 0:44.27 [移行/1]
  14 ルート 20 0 0 0 0 S 0.0 0.0 1:22.45 [ksoftirqd/1]
  16 ルート 0 -20 0 0 0 S 0.0 0.0 0:00.00 [kworker/1:0H]
  18 ルート 20 0 0 0 0 S 0.0 0.0 0:00.01 [kdevtmpfs]
  19 ルート 0 -20 0 0 0 S 0.0 0.0 0:00.00 [netns]
  20 ルート 20 0 0 0 0 S 0.0 0.0 0:01.35 [khungtaskd]
  21 ルート 0 -20 0 0 0 S 0.0 0.0 0:00.02 [書き戻し]
  22 ルート 0 -20 0 0 0 S 0.0 0.0 0:00.00 [kintegrityd]
  23 ルート 0 -20 0 0 0 S 0.0 0.0 0:00.00 [バイオセット]
  24 ルート 0 -20 0 0 0 S 0.0 0.0 0:00.00 [kblockd]
  25 ルート 0 -20 0 0 0 S 0.0 0.0 0:00.00 [md]
  26 ルート 0 -20 0 0 0 S 0.0 0.0 0:00.00 [edac-poller]
  33 ルート 20 0 0 0 0 S 0.0 0.0 1:19.07 [kswapd0]
  34 ルート 25 5 0 0 0 S 0.0 0.0 0:00.00 [ksmd]
  35 ルート 39 19 0 0 0 S 0.0 0.0 0:12.80 [khugepaged]
  36 ルート 0 -20 0 0 0 S 0.0 0.0 0:00.00 [暗号]
  44 ルート 0 -20 0 0 0 S 0.0 0.0 0:00.00 [kthrotld]
  46 ルート 0 -20 0 0 0 S 0.0 0.0 0:00.00 [kmpath_rdacd]

2) topコマンドをバッチモードで実行し、結果をメモリ使用量で並べ替える方法

結果をメモリ使用量で並べ替えるには、次のコマンドをバッチ モードで実行します。

# トップ -bc -o +%MEM | ヘッド -n 20
トップ - 06:42:00 8 日間稼働、20:25、ユーザー 1 人、負荷平均: 0.66、0.74、0.80
タスク: 合計 146、実行中 1、スリープ中 145、停止中 0、ゾンビ 0
%CPU: 0.0 us、0.0 sy、0.0 ni、100.0 id、0.0 wa、0.0 hi、0.0 si、0.0 st
KiB メモリ: 合計 3880940、空き 1422044、使用中 1059176、バフ/キャッシュ 1399720
KiB スワップ: 合計 1048572、空き 514640、使用済み 533932。使用可能なメモリ 2475984
 PID ユーザー PR NI 仮想リソース SHR S %CPU %MEM 時間+ コマンド
 18105 mysql 20 0 1453900 156096 8816 S 0.0 4.0 2:12.98 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid
 1841 ルート 20 0 228980 107036 5360 S 0.0 2.8 0:05.56 /usr/local/cpanel/3rdparty/perl/528/bin/perl -T -w /usr/local/cpanel/3rdparty/bin/spamd --max-children=3 --max-spare=1 --allowed-ips=127.0.0.+
 4301 ルート 20 0 230208 104608 1816 S 0.0 2.7 0:03.77 スパム子
 8139 誰もいない 20 0 257000 27108 3408 S 0.0 0.7 0:00.04 /usr/sbin/httpd -k 開始
 7961 誰もいない 20 0 256988 26912 3160 S 0.0 0.7 0:00.05 /usr/sbin/httpd -k 開始
 8190 誰もいない 20 0 256976 26812 3140 S 0.0 0.7 0:00.05 /usr/sbin/httpd -k 開始
 8353 誰もいない 20 0 256976 26812 3144 S 0.0 0.7 0:00.04 /usr/sbin/httpd -k 開始
 8629 誰もいない 20 0 256856 26736 3108 S 0.0 0.7 0:00.02 /usr/sbin/httpd -k 開始
 8636 誰もいない 20 0 256856 26712 3100 S 0.0 0.7 0:00.03 /usr/sbin/httpd -k 開始
 8611 誰もいない 20 0 256844 25764 2228 S 0.0 0.7 0:00.01 /usr/sbin/httpd -k 開始
 8451 誰もいない 20 0 256844 25760 2220 S 0.0 0.7 0:00.04 /usr/sbin/httpd -k 開始
 8610 誰もいない 20 0 256844 25748 2224 S 0.0 0.7 0:00.01 /usr/sbin/httpd -k 開始
 8632 誰もいない 20 0 256844 25744 2216 S 0.0 0.7 0:00.03 /usr/sbin/httpd -k 開始

上記コマンドの詳細:

-b : バッチモードオプション

-c: 実行中のプロセスの絶対パスを出力します

-o: ソートするフィールドを指定します

head: ファイルの最初の部分を出力します

-n: 最初のn行を印刷する

3) topコマンドをバッチモードで実行し、指定したユーザープロセスで結果を並べ替える方法

特定のユーザー プロセスで結果を並べ替える場合は、次のコマンドを実行します。

# トップ -bc -u mysql | ヘッド -n 10
トップ - 06:44:58 8 日間稼働、20:27、ユーザー 1 人、負荷平均: 0.99、0.87、0.84
タスク: 合計 140、実行中 1、スリープ中 137、停止中 0、ゾンビ 2
%CPU: 13.3 us、3.3 sy、0.0 ni、83.3 id、0.0 wa、0.0 hi、0.0 si、0.0 st
KiB メモリ: 合計 3880940、空き 1589832、使用済み 885648、バフ/キャッシュ 1405460
KiB スワップ: 合計 1048572、空き 514640、使用済み 533932。使用可能なメモリ 2649412
 PID ユーザー PR NI 仮想リソース SHR S %CPU %MEM 時間+ コマンド
 18105 mysql 20 0 1453900 156888 8816 S 0.0 4.0 2:16.42 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid

4) topコマンドをバッチモードで実行し、処理時間でソートする方法

結果を処理時間で並べ替えるには、バッチ モードで次の top コマンドを使用します。これは、タスクが開始されてから使用された CPU 時間の合計を示します。

ただし、Linux 上でプロセスがどのくらいの時間実行されているかを確認したい場合は、次の記事を参照してください。

Linux でプロセスがどのくらい実行されているかを確認する 5 つの方法

# トップ -bc -o TIME+ | ヘッド -n 20
トップ - 06:45:56 8 日間稼働、20:28、ユーザー 1 人、負荷平均: 0.56、0.77、0.81
タスク: 合計 148、実行中 1、スリープ中 146、停止中 0、ゾンビ 1
%CPU: 0.0 us、3.1 sy、0.0 ni、96.9 id、0.0 wa、0.0 hi、0.0 si、0.0 st
KiB メモリ: 合計 3880940、空き 1378664、使用中 1094876、バフ/キャッシュ 1407400
KiB スワップ: 合計 1048572、空き 514640、使用済み 533932。使用可能なメモリ 2440332
 PID ユーザー PR NI 仮想リソース SHR S %CPU %MEM 時間+ コマンド
   9 ルート 20 0 0 0 0 S 0.0 0.0 63:05.70 [rcu_sched]
  272 ルート 20 0 0 0 0 S 0.0 0.0 16:12.13 [xfsaild/vda1]
 3882 ルート 20 0 229832 6212 1220 S 0.0 0.2 9:00.84 /usr/sbin/httpd -k 開始
   1 ルート 20 0 191144 2800 1596 S 0.0 0.1 5:43.75 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
 3761 ルート 20 0 68784 9820 2048 S 0.0 0.3 5:09.67 tailwatchd
 3529 ルート 20 0 404380 3472 2604 S 0.0 0.1 3:24.98 /usr/sbin/rsyslogd -n
 3520 ルート 20 0 574208 572 164 S 0.0 0.0 3:07.74 /usr/bin/python2 -Es /usr/sbin/tuned -l -P
  444 dbus 20 0 58444 1144 612 S 0.0 0.0 2:23.90 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation
 18105 mysql 20 0 1453900 157152 8816 S 0.0 4.0 2:17.29 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid
  249 ルート 0 -20 0 0 0 S 0.0 0.0 1:28.83 [kworker/0:1H]
  14 ルート 20 0 0 0 0 S 0.0 0.0 1:22.46 [ksoftirqd/1]
  33 ルート 20 0 0 0 0 S 0.0 0.0 1:19.07 [kswapd0]
  342 ルート 20 0 39472 2940 2752 S 0.0 0.1 1:18.17 /usr/lib/systemd/systemd-journald

5) topコマンドをバッチモードで実行し、結果をファイルに保存する方法

トラブルシューティングの目的で top コマンドの出力を他のユーザーと共有する場合は、次のコマンドを使用して出力をファイルにリダイレクトします。

# トップ -bc | ヘッド -35 > トップレポート.txt
# cat トップレポート.txt
トップ - 06:47:11 8 日間稼働、20:30、ユーザー 1 人、負荷平均: 0.67、0.77、0.81
タスク: 合計 133、実行中 4、スリープ中 129、停止中 0、ゾンビ 0
%CPU: 59.4 us、12.5 sy、0.0 ni、28.1 id、0.0 wa、0.0 hi、0.0 si、0.0 st
KiB メモリ: 合計 3880940、空き 1596268、使用中 843284、バッファ/キャッシュ 1441388
KiB スワップ: 合計 1048572、空き 514640、使用済み 533932。使用可能なメモリ 2659084
 PID ユーザー PR NI 仮想リソース SHR S %CPU %MEM 時間+ コマンド
 9686 daygeekc 20 0 406132 62184 43448 R 94.1 1.6 0:00.34 /opt/cpanel/ea-php56/root/usr/bin/php-cgi
 9689 誰もいない 20 0 256588 24428 1184 S 5.9 0.6 0:00.01 /usr/sbin/httpd -k 開始
   1 ルート 20 0 191144 2800 1596 S 0.0 0.1 5:43.79 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
   2 ルート 20 0 0 0 0 S 0.0 0.0 0:00.32 [kthreadd]
   3 ルート 20 0 0 0 0 S 0.0 0.0 0:28.11 [ksoftirqd/0]
   5 ルート 0 -20 0 0 0 S 0.0 0.0 0:00.00 [kworker/0:0H]
   7 ルート rt 0 0 0 0 S 0.0 0.0 0:33.96 [移行/0]
   8 ルート 20 0 0 0 0 S 0.0 0.0 0:00.00 [rcu_bh]
   9 ルート 20 0 0 0 0 R 0.0 0.0 63:05.82 [rcu_sched]
  10 ルート 0 -20 0 0 0 S 0.0 0.0 0:00.00 [lru-add-drain]
  11 ルート rt 0 0 0 0 S 0.0 0.0 0:08.79 [ウォッチドッグ/0]
  12 ルート rt 0 0 0 0 S 0.0 0.0 0:08.82 [ウォッチドッグ/1]
  13 ルート rt 0 0 0 0 S 0.0 0.0 0:44.28 [移行/1]
  14 ルート 20 0 0 0 0 S 0.0 0.0 1:22.46 [ksoftirqd/1]
  16 ルート 0 -20 0 0 0 S 0.0 0.0 0:00.00 [kworker/1:0H]
  18 ルート 20 0 0 0 0 S 0.0 0.0 0:00.01 [kdevtmpfs]
  19 ルート 0 -20 0 0 0 S 0.0 0.0 0:00.00 [netns]
  20 ルート 20 0 0 0 0 S 0.0 0.0 0:01.35 [khungtaskd]
  21 ルート 0 -20 0 0 0 S 0.0 0.0 0:00.02 [書き戻し]
  22 ルート 0 -20 0 0 0 S 0.0 0.0 0:00.00 [kintegrityd]
  23 ルート 0 -20 0 0 0 S 0.0 0.0 0:00.00 [バイオセット]
  24 ルート 0 -20 0 0 0 S 0.0 0.0 0:00.00 [kblockd]
  25 ルート 0 -20 0 0 0 S 0.0 0.0 0:00.00 [md]
  26 ルート 0 -20 0 0 0 S 0.0 0.0 0:00.00 [edac-poller]
  33 ルート 20 0 0 0 0 S 0.0 0.0 1:19.07 [kswapd0]
  34 ルート 25 5 0 0 0 S 0.0 0.0 0:00.00 [ksmd]
  35 ルート 39 19 0 0 0 S 0.0 0.0 0:12.80 [khugepaged]
  36 ルート 0 -20 0 0 0 S 0.0 0.0 0:00.00 [暗号]

指定したフィールドで結果を並べ替える方法

top コマンドの最新バージョンでは、f キーを押してフィールド管理インターフェイスに入ります。

新しいフィールドを使用して並べ替えるには、上/下矢印を使用して正しいオプションを選択し、s キーを押して並べ替えます。最後に、q キーを押してこのウィンドウを終了します。

現在のソートフィールドが %CPU であるウィンドウ 1:Def のフィールド管理
  上/下ボタンで移動し、右ボタンで移動を選択し、左ボタンで確定します。
  'd' または は表示を切り替え、 's' は並べ替えを設定します。終了するには 'q' または を使用してください。
 PID = プロセスID nsUTS = UTS名前空間Inode
 USER = 実効ユーザー名 LXC = LXC コンテナ名
 PR = 優先度 RSan = RES 匿名 (KiB)
 NI = ナイス値 RSfd = RES ファイルベース (KiB)
 VIRT = 仮想イメージ (KiB) RSlk = RES ロック (KiB)
 RES = 常駐サイズ (KiB) RSsh = RES 共有 (KiB)
 SHR = 共有メモリ (KiB) CGNAME = 制御グループ名
 S = プロセスステータス NU = 最後に使用されたNUMAノード
 %CPU = CPU 使用率
 %MEM = メモリ使用量 (RES)
 TIME+ = CPU時間、100分の1
 COMMAND = コマンド名/行
 PPID = 親プロセス pid
 UID = 実効ユーザーID
 RUID = 実ユーザーID
 RUSER = 実ユーザー名
 SUID = 保存されたユーザー ID
 SUSER = 保存されたユーザー名
 GID = グループID
 GROUP = グループ名
 PGRP = プロセス グループ ID
 TTY = 制御 TTY
 TPGID = Tty プロセス グループ ID
 SID = セッションID
 nTH = スレッド数
 P = 最後に使用された CPU (SMP)
 時間 = CPU時間
 SWAP = スワップサイズ (KiB)
 CODE = コードサイズ (KiB)
 DATA = データ+スタック (KiB)
 nMaj = メジャーページフォールト
 nMin = マイナーページフォールト
 nDRT = ダーティページ数
 WCHAN = 関数内でスリープ
 フラグ = タスクフラグ
 CGROUPS = コントロールグループ
 SUPGIDS = 補助グループ ID
 SUPGRPS = 補助グループ名
 TGID = スレッドグループID
 OOMa = OOMEM調整
 OOMs = OOMEM スコア現在
 ENVIRON = 環境変数
 vMj = 主要断層デルタ
 vMn = マイナーフォルトデルタ
 USED​​ ​​= メモリ+スワップサイズ (KiB)
 nsIPC = IPC 名前空間 Inode
 nsMNT = MNT 名前空間 Inode
 nsNET = NET 名前空間 Inode
 nsPID = PID名前空間Inode
 nsUSER = USER 名前空間 Inode

top コマンドの古いバージョンの場合は、shift+f または shift+o を押して、並べ替え用のフィールド管理インターフェイスに入ります。

新しいフィールドを使用して並べ替えるには、適切な並べ替えフィールド文字を選択し、Enter キーを押して並べ替えます。

現在のソートフィールド: ウィンドウ 1:Def の N
 フィールド文字でソートフィールドを選択し、他のキーを入力すると戻ります
 a: PID = プロセスID
 b: PPID = 親プロセスPID
 c:RUSER = 実ユーザー名
 d: UID = ユーザーID
 e: USER = ユーザー名
 f: GROUP = グループ名
 g: TTY = 制御TTY
 h: PR = 優先度
 i: NI = ナイス値
 j: P = 最後に使用されたCPU (SMP)
 k: %CPU = CPU使用率
 l: TIME = CPU時間
 m: TIME+ = CPU時間、100分の1
* N: %MEM = メモリ使用量 (RES)
 o: VIRT = 仮想イメージ (kb)
 p: SWAP = スワップされたサイズ (kb)
 q: RES = 常駐サイズ (kb)
 r: CODE = コードサイズ (kb)
 s: DATA = データ+スタックサイズ (kb)
 t: SHR = 共有メモリサイズ (kb)
 u: nFLT = ページフォルト数
 v: nDRT = ダーティページ数
 w: S = プロセスステータス
 x: COMMAND = コマンド名/行
 y: WCHAN = 関数内でスリープ中
 z: フラグ = タスクフラグ
 注1:
  選択した並べ替えフィールドが
  画面の幅や
  フィールドの順序、「<」と「>」キー
  フィールドが
  視認範囲内のものが選択されます。
 注2:
  フィールドのソートでは内部値が使用されます。
  列表示のものではありません。したがって、
  TTYとWCHANフィールドは違反する
  厳密な ASCII 照合シーケンス。
  (WCHAN が選ばれたら恥を知れ)

要約する

上記はエディターが紹介したバッチモードでtopコマンドを実行する方法です。皆様のお役に立てれば幸いです。ご質問がございましたら、メッセージを残していただければ、エディターがすぐに返信いたします。また、123WORDPRESS.COM ウェブサイトをサポートしてくださっている皆様にも感謝申し上げます。
この記事が役に立ったと思われた方は、ぜひ転載していただき、出典を明記してください。ありがとうございます!

以下もご興味があるかもしれません:
  • ファイルのコピーと名前変更を行うバッチ処理コマンドの実装
  • バッチコマンド call、start、goto の使用
  • バッチコピーコマンドの具体的な使い方
  • バッチ スクリプト (Batcher) での set コマンドの使用に関する詳細な説明
  • 新しいウィンドウでコマンドを実行するバッチ処理スクリプト

<<:  MySQLの水平および垂直テーブルパーティションの説明

>>:  Echarts 凡例コンポーネントのプロパティとソース コード

推薦する

ドロップダウンリスト選択ボックスを実装するJavaScript

この記事の例では、ドロップダウンリスト選択ボックスを実装するためのJavaScriptの具体的なコー...

Dapr を使用してマイクロサービスをゼロから簡素化する例

目次序文1. Dockerをインストールする2. Dapr CLIをインストールする3. Net6 ...

Python で pymysql モジュールを使用して MySQL データベースに接続する

pymysqlをインストールするpip install pymysql 2|0pymysqlの使用2...

11 の素晴らしい JavaScript コード リファクタリングのベスト プラクティスの概要

目次1. 関数の抽出2. 重複した条件付きスニペットを結合する3. 条件分岐文を関数に抽出する4. ...

HTML面接の質問の要約

1. doctypeの役割、厳密モードと混合モードの違い、そしてその重要性1. 構文形式: <...

docker pruneコマンドは、あまり使用されないデータを定期的にクリーンアップするために使用できます。

目次docker システム df docker システム プルーンNoneオブジェクトをクリーンアッ...

MYSQL SERVER のログファイルを縮小する方法

トランザクション ログには、関連するデータベースに対する操作が記録され、データベースの回復に関連する...

CSS3 で King of Glory マッチング人員読み込みページを実装する方法

King of Glory をプレイしたことがある人なら、このページの効果をよくご存知でしょう。なぜ...

MySQL ファジークエリの使用法 (通常、ワイルドカード、組み込み関数)

目次1. MySQL ワイルドカード ファジー クエリ (%,_) 1-1. ワイルドカードの分類1...

Centos7でポートを開く方法

CentOS7 のデフォルトのファイアウォールは iptables ではなく、firewalle で...

MySQLテーブルのフィールドと関連属性をエクスポートする手順

データベース内のテーブルのフィールドとプロパティをエクスポートし、テーブルを作成してWordに保存す...

Dockerイメージを構築する2つの方法

目次既存のイメージからイメージを更新します。イメージを最初から構築する: Docker イメージ リ...

OpenSSL は双方向認証のチュートリアルを実装します (サーバーとクライアントのコード付き)

1. 背景1.1 問題点最近の製品テスト レポートでは、PKI ベースの認証方法の使用が推奨されて...

Docker Docker の保存場所を変更する コンテナイメージのサイズ制限を変更する操作

これは新しいバージョンではもう不可能なようで、推奨されません。そうでない場合は、ソフト リンクを直接...

JavaScript BOM ロケーション オブジェクト + ナビゲーター オブジェクト + 履歴オブジェクト

目次1. 場所オブジェクト1. URL 2. 場所オブジェクトのプロパティ3. ロケーションオブジェ...