バッチモードで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 凡例コンポーネントのプロパティとソース コード

推薦する

Tomcat サーバーが tomcat7w.exe を開けない場合の解決策

今日、Tomcat サーバーの設定時にちょっとした問題が発生したので、参考までにいくつかご説明したい...

MySQL 最適化: キャッシュ最適化

何人かのブロガーが私の記事を評価してくれたのは嬉しいです。マークと知り合ってからは、私は彼をフォロー...

高い同時実行性の下でNginxのパフォーマンスを最適化する方法をまとめます

目次特徴利点インストールとコマンド設定ファイルプロキシモードとリバースプロキシ構成フォワードプロキシ...

Docker で ElasticSearch をデプロイする方法

1. ElasticSearch とは何ですか? Elasticsearch も Java で開発さ...

制限およびオフセット ページング シナリオを使用すると速度が遅くなるのはなぜですか?

質問から始めましょう5 年前、私が Tencent にいたとき、ページング シナリオでは MySQL...

Vueプロジェクトを大画面に適応させる方法の例

レムの簡単な分析まず、remはCSS単位です。pxの固定ピクセル単位と比較すると、remはより柔軟性...

Docker イメージの最適化 (1.16GB から 22.4MB)

目次最適化の第一歩: 軽量ベースイメージの使用第2段階の最適化:多段階構築Docker は、ソフトウ...

tomcat デプロイメント プロジェクトの実装と IDEA との統合

目次Tomcat でプロジェクトを展開する 3 つの方法プロジェクトをwebappsディレクトリに直...

JavaScriptエンジンV8の実行プロセスの詳細な説明

目次1. V8ソース2. V8サービスターゲット3. V8の初期アーキテクチャIV. V8の初期アー...

Vueはローカルストレージの追加、削除、変更機能を実装します

この記事では、ローカルストレージの追加、削除、変更を実装するためのVueの具体的なコードを例として紹...

MySQL で中国語を入力するときに発生するエラー 1366 の解決方法

MySQL で中国語を入力すると、次のエラーが発生します。エラー 1366: 1366: 行 1 の...

MySQL における一般的な高度な SQL ステートメント

MySQL 高度な SQL ステートメント kgc を使用します。 テーブルlocation(Reg...

HttpとHttpsの両方をサポートするNginxの詳細な設定

最近の Web サイトでは Https をサポートすることがほぼ標準機能となっており、Nginx は...

Nginx ログ管理の概要

Nginx ログの説明アクセス ログを通じて、ユーザーの地理的起源、ジャンプ元、使用端末、特定の U...

Vue の詳細な入門ノート

目次1. はじめに2. 初期ビュー(I) Vueの概念を理解する(II) MVVMアーキテクチャ(I...