Linuxシステムの監視は、システムがスムーズに実行されていることを確認し、ボトルネックを回避するために、Linuxユーザーまたはシステム管理者が24時間実行する必要がある最も典型的なタスクの1つです。 Linuxには、システムの監視に役立ついくつかの組み込みツールが付属しています。これらの1つはps(プロセスステータス)です。 )実行中のプロセス、およびプロセスに関連する他のメトリック( CPU のパーセンテージなど)を具体的に監視するコマンド およびメモリ 利用。 psコマンドは、RAMベースまたは仮想ファイルシステムである/procファイルシステムを読み取ります。
このガイドでは、さらに深く掘り下げて、最も一般的に使用される20のpsコマンドについて説明します。
1)シェルでのリストプロセス
Linuxでのpsコマンドの最も単純な形式は、現在のシェルで実行中のプロセスを一覧表示します。これは以下に説明できます。
[[email protected] ~]$ ps PID TTY TIME CMD 1437 pts/0 00:00:00 bash 1465 pts/0 00:00:00 ps [[email protected] ~]$
いくつかの用語を定義しましょう:
- PID:これはプロセスIDです。
- TTY:これは、プロセスを開始して制御している端末を指します。
- 時間:これは、プロセスが実行された時間/累積時間です。
- CMD:プロセスを開始したコマンドの名前。
2)端末に関連付けられたプロセスの一覧表示
これは、シェルにプロセスをリストするのとよく似ています。現在実行している端末に関連付けられているプロセスを一覧表示するには、次のコマンドを実行します。
[[email protected] ~]$ ps -T PID SPID TTY TIME CMD 1437 1437 pts/0 00:00:00 bash 13357 13357 pts/0 00:00:00 ps [[email protected] ~]$
3)システムで実行中のすべてのプロセスを表示する
Linuxシステムで実行中のすべてのプロセスの概要を取得するには、-Aフラグを使用します。 示されているように:
[[email protected] ~]$ ps -A
または、–eフラグを使用することもできます 示されているように。引き続き同様の結果が得られます。
[[email protected] ~]$ ps -e
4)出力をBSD形式で表示する
プロセスをBSD形式で一覧表示するには、コマンドを実行します
$ ps -aux
コマンドを分解してみましょう:
-aフラグは、すべてのユーザーからのすべてのプロセスを表示するようにpsに指示します。ただし、これには特定の端末に関連付けられたプロセスは含まれません。
-uフラグは、ユーザー指向の形式を意味します。実行中のプロセスに関連するより詳細な情報を提供します。
xフラグは、通常、システムの起動時に開始されるプロセスとバックグラウンドプロセスを一覧表示します。
場所:
- USER –これはプロセスを実行しているユーザーを指定します
- PID –これはプロセスのプロセスIDです
- %CPU –これは各プロセスのCPU使用率です
- %MEM –これはプロセスによって使用された物理メモリの%です
- VSZ –これは各プロセスの仮想メモリのサイズ(キロバイト単位)です
- RSS –これはプロセスによって使用されている物理メモリのサイズ/量です
- STAT –これはプロセス状態コードを指します(例:S(スリープ)、Z(ゾンビ)、R(実行中)
- START –これはプロセスの実行を開始した時間です
5)UNIX形式での出力の表示
UNIX形式で出力を表示する場合は、 -efを組み合わせてpsコマンドを実行します。 フラグ
[[email protected] ~]$ ps -ef
-eフラグは、psコマンドにすべてのプロセスを一覧表示するように指示します
-fフラグ(フルフォーマット)は、psコマンドにプロセスに関する詳細情報を一覧表示するように指示します。
スクリーンショットからいくつかの新しい用語を定義しましょう:
- PPID:これは親プロセスIDを指します
- C:これは、プロセスの%CPUまたはCPU使用率を指します。
- STIME:これはコマンドが開始された時刻を指します。 STARTと同じ
6)ユーザー定義形式で出力を表示する
ユーザー定義形式の出力では、表示する列を決定することができます。 -oフラグ psコマンドの実行時に表示される列を決定します。以下の例では、 PIDのみ および開始 列が表示されます。列オプションは、psコマンドで小文字で渡されることに注意してください。
[[email protected] ~]$ ps -efo pid,start PID STARTED 1437 21:55:28 13632 01:41:16 [[email protected] ~]$
7)ユーザーの現在実行中のプロセスを表示する
特定のユーザーに関連付けられているプロセスを見つけたい場合があるため、これを実現するには、-uフラグを使用します。 示されているように」
$ps-uユーザー
または
$ ps -u uid
たとえば、ユーザー「Linuxtechi」に関連付けられているプロセスを表示するには、次のコマンドを実行します。
$ ps -u linuxtechi
または、ユーザーのuid(ユーザーID)を使用することもできます。次のコマンドを実行して、ユーザーのIDを取得できます。
$idユーザー
[[email protected] ~]$ id linuxtechi uid=1000(linuxtechi) gid=1000(linuxtechi) groups=1000(linuxtechi),10(wheel) [[email protected] ~]$
上記の出力から、ユーザー「linuxtechi」のuidが1000であることがはっきりとわかります。次に、psコマンドとuidを使用して、ユーザーに関連付けられているプロセスを見つけることができます。
$ ps -u 1000
rootユーザーの場合、コマンドを実行します
$ ps -u root
同様に、値が0のrootユーザーのuidを使用して確認できます
$ ps -u 0
8)グループプロセスの表示
グループプロセスの一覧表示は、ユーザープロセスの一覧表示に似ています。グループIDを指定してグループの名前を渡すことにより、psコマンドを使用してグループプロセスを一覧表示できます。
たとえば、グループ「apache」に関連付けられているプロセスを表示するには、次のコマンドを実行します。
$ ps-fG<グループ名>
$ ps -fG apache
または、グループ名の代わりにグループID(gid)を渡すこともできます。 / etc/groupファイルからGIDを取得できます。
たとえば、この場合、ApacheのグループIDは48です。したがって、グループ名「 apache」を指定する代わりに ’は単にGID番号を指定します。 48。
$ ps -fG 48
9)PIDとPPIDを使用したプロセスの表示
Linuxプロセスは、 PIDを使用して表示することもできます (プロセスID )および PPID(親プロセスID) 。 PPIDは、プロセスの親のPIDを指します。
PID別にプロセスを一覧表示するには、
を実行します。$ ps -fp PID
たとえば、PID 1286に関連付けられているプロセスを一覧表示するには、次のコマンドを実行します。
[[email protected] ~]$ ps -fp 1286 UID PID PPID C STIME TTY TIME CMD postfix 1286 1285 0 03:49 ? 00:00:00 pickup -l -t unix -u [[email protected] ~]$
PPID別にプロセスを一覧表示するには、
を実行します。
$ ps -f –ppid
たとえば、PPID31903が所有するプロセスを一覧表示するには
$ ps -f --ppid 31903
10)プロセス名を使用してPIDを検索する
ほとんどの場合、プロセス名のPIDはわかりません。これを行うには、-Cフラグを使用します 示されているように
$ ps-C<プロセス名>
[[email protected] ~]$ ps -C firefox PID TTY TIME CMD 1446 tty2 00:00:04 firefox [[email protected] ~]$
11)TTYを使用したプロセスの表示
tty値でプロセスをフィルタリングする場合は、-tフラグを使用します。 。たとえば、tty1に接続されているプロセスを表示するには、次のようにpsコマンドを実行します。
$ ps -ft tty1
12)プロセスツリーの印刷
プロセスツリーは、Linuxシステムでプロセスがどのようにリンクされているかを示します。親がいないプロセスは、initまたはsystemdを介してシステムにリンクします。印刷には、次の形式を使用する必要があります。
$ ps -e --forest
13)スレッドプロセスに従ってプロセスをフィルタリングします
プロセススレッドを使用してプロセスをフィルタリングするには、-Lフラグを使用します 示されているように、
$ ps -L 1446
14)リアルタイムのプロセス監視
監視ユーティリティを使用して、プロセスに関する静的情報を監視できます。以下に示すように、出力は毎秒再生されます
$ watch -n 1 'ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu | head'
このコマンドは、pid、ppid、cmd、%mem、および%cpu列を出力し、%CPU使用率を並べ替えている間、1秒ごとに統計を監視します。 降順。
15)Linuxマシンのパフォーマンスの問題のトラブルシューティング
システムが低速または過負荷の場合、CPUとメモリの使用量が最も多いことで最も実行中のプロセスを特定できます
次のpsコマンドを実行して、大量のメモリを消費している上位のプロセスを一覧表示します。
$ ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head
次のpsコマンドを実行して、高いCPUを消費している上位のプロセスを一覧表示します。
$ ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu | head
私のシステムでの上記のpsコマンドの出力例は以下のとおりです
16)応答しないプロセスを強制終了する
psコマンドを使用すると、応答しないアプリケーションや、CPUとRAMを占有しているプロセスを強制終了できます。これを行うには、次のコマンドを使用して、その特定のアプリケーションのPIDを見つける必要があります。
$ ps -A | grep -i stress
プロセスのPIDを見つけたら、killコマンドを使用してプロセスを終了できます。例を以下に示します。
$ kill -9 2583 2584
17)すべてのプロセスインスタンスのすべてのPIDを一覧表示します
次の構文を使用して、プロセスに関連付けられているすべてのPIDを一覧表示できます。
$ ps-C<プロセス名>-opid =
たとえば、httpd Webサーバーに関連付けられているPIDを確認するには、次のコマンドを実行します。
$ ps -C httpd -o pid=
18)プロセスが実行されている期間を表示します
プロセスが実行されている時間を表示するには、次のコマンドを実行します。
$ ps -eo comm,etime,user
以下のpsコマンドを使用して、特定のプロセスが実行されている時間を確認します。
$ ps -o etime -p
mysqlプロセスについて知りたいとしましょう
[[email protected] ~]$ ps -C mysqld -o pid= 3807 [[email protected] ~]$ [[email protected] ~]$ ps -o etime -p 3807 ELAPSED 01:13:56 [[email protected] ~]$
19)プロセスの子プロセスを一覧表示する
プロセスの子プロセスを印刷または一覧表示するには、-Cフラグを使用します 以下の構文で:
$ ps-C<プロセス名>
たとえば、httpdプロセスに関連付けられている子プロセスを一覧表示するには、
を実行します。[[email protected] ~]$ ps -C httpd PID TTY TIME CMD 31911 ? 00:00:00 httpd 31918 ? 00:00:00 httpd 31919 ? 00:00:00 httpd 31920 ? 00:00:01 httpd 31921 ? 00:00:01 httpd 31922 ? 00:00:01 httpd [[email protected] ~]$
20)grepを使用したpsコマンドの出力のフィルタリング
psコマンドで特定の結果を取得するには、出力をgrepユーティリティツールにパイプして、検索条件を指定します。
たとえば、phpプロセスを検索または絞り込むには、次のコマンドを実行します。
$ ps -ef | grep php
Linuxシステムで実行されているプロセスの一覧表示と監視に一般的に使用される上位20のpsコマンドを一覧表示しました。これらのコマンドはすべてのLinuxディストリビューションで機能し、システムで実行されているプロセスの概要を確実に示し、CPUおよびRAMリソースを過負荷にしているプロセスを特定するのに役立ちます。このガイドは洞察に満ちていますか?ソーシャルメディアプラットフォーム間で自由に気に入って共有してください。フィードバックは大歓迎です。
また読む :LinuxServerのパフォーマンスを監視するための25の上位コマンド例