GNU/Linux >> Linux の 問題 >  >> Linux

Linuxでのプロセス監視

はじめに

この記事では、次のようなLinuxシステムのプロセス監視で使用される例を使用して、最も一般的なコマンドについて説明します。

  • ps
  • トップ
  • htop
  • lsof

1。 ps

ご存知のとおり、Linuxはマルチタスクおよびマルチユーザーシステムです。したがって、複数のプロセスが互いに干渉することなく同時に動作することができます。プロセスは、LinuxOSの重要な基本概念の1つです。プロセスは、プログラムの実行インスタンスであり、オペレーティングシステム内でさまざまなタスクを実行します。

Linuxは、 psと呼ばれるユーティリティを提供します 「プロセスステータス」の略語であるシステム上のプロセスに関連する情報を表示するため。 psコマンドは、現在実行中のプロセスを一覧表示するために使用され、それらのPIDは、他のいくつかの情報とともに、さまざまなオプションによって異なります。 / proc内の仮想ファイルからプロセス情報を読み取ります ファイルシステム。 / procには仮想ファイルが含まれているため、仮想ファイルシステムと呼ばれます。

psは、必要に応じて出力を操作するための多数のオプションを提供します。

構文

ps [options]

psコマンドのオプション:

1-簡単なプロセス選択:

現在のシェルのプロセスを表示します

結果には4列の情報が含まれます。
どこ、
PID – 一意のプロセスID
TTY – ユーザーがログインしている端末タイプ
時間– プロセスが実行されている分および秒単位のCPUの量
CMD – プロセスを起動したコマンドの名前。

注– psを実行するとき コマンドの場合、TIMEは00:00:00と表示されます。これは、任意のプロセスの累積CPU使用時間の合計に他なりません。00:00:00は、これまでカーネルからCPU時間が与えられていないことを示します。上記の例では、bashの場合、CPU時間が指定されていないことがわかりました。これは、bashがさまざまなプロセスの親プロセスであり、実行にbashが必要であり、bash自体がこれまでCPU時間を利用していないためです。

2。 プロセスの表示:

実行中のすべてのプロセスを表示するには、ps –

で次のオプションのいずれかを使用します
# ps -A
# ps -e
3。 端末に関連付けられていないプロセスを表示する:

セッションリーダーと端末に関連付けられていないプロセスの両方を除くすべてのプロセスを表示します。

# ps -a

注– セッションリーダーとは何かとお考えかもしれません。ユニークなセッションは、evryプロセスグループを支援しています。したがって、セッションリーダーは、他のプロセスを開始するプロセスです。任意のセッションの最初のプロセスのプロセスIDは、セッションIDと同様です。

4。 セッションリーダーを除くすべてのプロセスを表示する:
# ps -d

5. 指定された条件を満たすプロセスを除くすべてのプロセスを表示します(選択を無効にします):
例– 端末に関連付けられていないセッションリーダーとプロセスのみを表示する場合。次に、

を実行します
# ps -a -N
or
# ps -a --deselect

6. この端末に関連付けられているすべてのプロセスを表示します:

# ps -T

7. 実行中のすべてのプロセスを表示します:

# ps -r

8. 自分が所有するすべてのプロセスを表示します: プロセス、つまりpsコマンドのランナーを意味するpsと同じEUID、この場合はルート

# ps -x

リストによるプロセス選択

ここでは、psコマンドを使用して特定のプロセスリストを取得する方法について説明します。これらのオプションは、空白で区切られたリストまたはコンマで区切られたリストの形式で単一の引数を受け入れます。それらは複数回使用できます。
例: ps -p“ 1 2” -p 3,4

  1. コマンド名でプロセスを選択します。これにより、実行可能ファイル名がcmdlistで指定されているプロセスが選択されます。プロセスIDがわからない可能性があります。このコマンドを使用すると、検索が簡単になります。

構文: ps -C command_name

[root@unixcop ~]# ps -C dhclient
  PID TTY          TIME CMD
19815 ?        00:00:00 dhclient

2.グループIDまたは名前で選択します。グループIDは、プロセスを作成したユーザーのグループを識別します。

Syntax : ps -G group_name
         ps --Group group_name

Example :
[root@unixcop ~]# ps -G root

3.グループIDで表示:

Syntax : ps -g group_id
              ps -group group_id

今の例

# ps -g 1

4.プロセスIDごとにプロセスを表示します。

-Syntax :
ps p process_id
ps -p process_id
ps --pid process_id

例:

[root@unixcop ~]#  ps p 27223
  PID TTY      STAT   TIME COMMAND
27223 ?        Ss     0:01 sshd: root@pts/2

[root@unixcop ~]#  ps -p 27223
  PID TTY          TIME CMD
27223 ?        00:00:01 sshd

[root@unixcop ~]#  ps --pid 27223
  PID TTY          TIME CMD
27223 ?        00:00:01 sshd

ブランクまたはコンマで区切られた複数のプロセスIDを指定することにより、複数のプロセスを表示できます–
の場合 例:

[root@unixcop ~]#  ps -p 1 904 27223
  PID TTY      STAT   TIME COMMAND
    1 ?        Ss     0:13 /usr/lib/systemd/systemd --switched-root --system --d
  904 tty1     Ssl+   1:02 /usr/bin/X -core -noreset :0 -seat seat0 -auth /var/r
27223 ?        Ss     0:01 sshd: root@pts/2

ここでは、空白で区切られた1、904、27223の3つのプロセスIDについて説明しました。

5.親プロセスIDで選択します。このコマンドを使用すると、親プロセスを除く、親プロセスが所有するすべてのプロセスを表示できます。

[root@unixcop ~]# ps -p 766
  PID TTY          TIME CMD
  766 ?        00:00:06 NetworkManager

[root@unixcop ~]# ps --ppid 766
  PID TTY          TIME CMD
19815 ?        00:00:00 dhclient

上記のプロセスIDの例では766 はNetworkManagerに割り当てられており、これはプロセスID19815のdhclientの親プロセスです。

6.任意のセッションIDに属するすべてのプロセスを表示します。

Syntax :
ps -s session_id
ps --sid session_id

Example :
[root@unixcop ~]# ps -s 1248
  PID TTY          TIME CMD
 1248 ?        00:00:00 dbus-daemon
 1276 ?        00:00:00 dconf-service
 1302 ?        00:00:00 gvfsd
 1310 ?        00:00:00 gvfsd-fuse
 1369 ?        00:00:00 gvfs-udisks2-vo
 1400 ?        00:00:00 gvfsd-trash
 1418 ?        00:00:00 gvfs-mtp-volume
 1432 ?        00:00:00 gvfs-gphoto2-vo
 1437 ?        00:00:00 gvfs-afc-volume
 1447 ?        00:00:00 wnck-applet
 1453 ?        00:00:00 notification-ar
 1454 ?        00:00:02 clock-applet

7.ttyで選択します。これにより、前述のttyに関連付けられているプロセスが選択されます:

The Syntax :
ps t tty
ps -t tty
ps --tty tty

# ps -t pts/0

8.有効なユーザーIDまたは名前で選択します。

そして構文は:
ps U user_name / ID

ps -U user_name / ID

出力フォーマットコントロール

これらのオプションは、psによって表示される情報を選択するために使用されます。出力フォーマットを制御するための複数のオプションがあります。これらのオプションは、 e、u、p、G、gなどの他のオプションと組み合わせることができます。 など、私たちのニーズに依存します。

1. -fを使用します フルフォーマットのリストを表示するには。

ps -af

2. -Fを使用します エクストラフルフォーマットを表示するには。

ps -F

3.ユーザー定義の形式に従ってプロセスを表示します。

#  ps --formate column_name
#  ps -o column_name
#  ps o column_name

ps -aN --format cmd,pid,user,ppid

この例では、コマンド、プロセスID、ユーザー名、親プロセスIDを確認したいので、それぞれcmd、pid、user、ppidの引数を渡します。

4. BSDジョブ制御形式で表示:

ps -j

5. BSDロングフォーマットを表示します:

ps l

6.セキュリティデータの列を追加します。

ps -aM

7.信号形式でコマンドを表示します。

[root@unixcop ~]# ps s 766

8.ユーザー指向のフォーマットを表示する

ps u 1

9.仮想メモリ形式を表示する

ps v 1

10.任意のコマンドの環境を確認したい場合。次に、オプション** e ** –

を使用します
[root@unixcop ~]# ps ev 766
  PID TTY      STAT   TIME  MAJFL   TRS   DRS   RSS %MEM COMMAND
  766 ?        Ssl    0:08     47  2441 545694 10448  1.0 /usr/sbin/NetworkManager --no-daemon LANG=en_US.UTF-8 PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin

11.最高のメモリを使用しているプロセスを表示します。

ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem

12.プロセスツリーを印刷する

[root@unixcop ~]# ps --forest -C sshd
  PID TTY          TIME CMD
  797 ?        00:00:00 sshd
11680 ?        00:00:03  \_ sshd
16361 ?        00:00:02  \_ sshd

13.特定のプロセスのすべてのスレッドを一覧表示します。 -Tまたは-Lのいずれかを使用します プロセスのスレッドを表示するオプション。

[root@unixcop ~]# ps -C sshd -L
  PID   LWP TTY          TIME CMD
  797   797 ?        00:00:00 sshd
11680 11680 ?        00:00:03 sshd
16361 16361 ?        00:00:02 sshd

注– さまざまな列の内容の説明については、マニュアルページを参照してください。

参照: マニュアルページ

2。トップ

トップ コマンドは、Linuxプロセスを表示するために使用されます。実行中のシステムの動的なリアルタイムビューを提供します。通常、このコマンドは、システムの概要情報と、現在Linuxカーネルによって管理されているプロセスまたはスレッドのリストを表示します。
このコマンドを実行するとすぐに、対話型コマンドモードが開き、上半分にプロセスとリソース使用量の統計が含まれます。下半分には、現在実行中のプロセスのリストが含まれています。 qを押す コマンドモードを終了するだけです。

構文

top

こちら

  • PID: タスクの一意のプロセスIDを表示します。
  • PR: タスクの優先度を表します。
  • SHR: タスクによって使用される共有メモリの量を表します。
  • VIRT: タスクによって使用された仮想メモリの合計。
  • ユーザー: タスクの所有者のユーザー名。
  • %CPU: CPU使用率を表します。
  • 時間+: CPU時間。「時間」と同じですが、100分の1秒までの粒度が反映されます。
  • SHR: タスクが使用する共有メモリのサイズ(kb)を表します。
  • NI: タスクの良い値を表します。負のnice値は優先度が高いことを意味し、正のnice値は優先度が低いことを意味します。
  • %MEM: タスクのメモリ使用量を表示します。

例:

1)特定の繰り返しの後にトップコマンドを終了します: 上部の出力は、「q」を押すまで更新され続けます。以下のコマンドを使用すると、topコマンドは20回の繰り返し後に自動的に終了します。

top -n 10

2)特定のユーザープロセスを表示する

top -u unixcop

ここでは、unixcopと呼ばれるユーザー

3)実行中のプロセスを一番上にハイライトします: ‘z‘を押します 実行中のtopコマンドのオプションは、実行中のプロセスをカラーで表示し、実行中のプロセスを簡単に識別できるようにします

4)プロセスの絶対パスを表示します:

‘c‘を押します topコマンドを実行する際のオプションで、実行中のプロの絶対パスを表示します

5)実行中のプロセスを強制終了します: ‘k‘ を押すと、プロセスのPIDを見つけた後にプロセスを強制終了できます。 以下に示すように、トップウィンドウを終了せずにtopコマンドを実行する際のオプション。

6)CPU使用率で並べ替え: (Shift + P)を押します CPU使用率に従ってプロセスをソートします。

7)上位のコマンド構文を表示します:

top -h 

8)バッチモード: 上からファイルまたは他のプログラムに出力を送信します。

top -b

9)セキュアモード: セキュアモードでtopを使用します。

top -s

10)コマンドライン: 以下のコマンドは、最後に閉じた状態から始まります。

Top -c

11)遅延時間: 画面更新間の遅延時間を示します。

top -d seconds.tenths

3。 htop

htop Linuxシステムのコマンドは、ユーザーがシステムの重要なリソースまたはサーバーのプロセスをリアルタイムでインタラクティブに監視できるようにするコマンドラインユーティリティです。 htop トップと比較して新しいプログラムです コマンド、およびそれはトップコマンドに比べて多くの改善を提供します。 htopはマウス操作をサポートし、出力に色を使用し、プロセッサ、メモリ、およびスワップの使用状況を視覚的に示します。 htopはまた、プロセスの完全なコマンドラインを出力し、プロセスとコマンドラインをそれぞれ垂直方向と水平方向の両方にスクロールできるようにします。

構文:

htop [-dChusv]

例:

オプション:

  • -d –delay: 更新間の遅延を10分の1秒単位で表示するために使用されます。
  • -C –no-color –no-color :htopをモノクロモードで起動します。
  • -h –help: ヘルプメッセージを表示して終了するために使用されます。
  • -u –user =USERNAME: 特定のユーザーのプロセスのみを表示するために使用されます。
htop -u qadry
  • -p –pid =PID、PID…: 指定されたPIDのみを表示するために使用されます。
  • -s –sort-key列: この列で並べ替えます(列リストには–sort-keyヘルプを使用します)。
  • -V –バージョン: バージョン情報を出力して終了します。

インタラクティブコマンド:

  • 矢印、Page Up、Page Down、Home、End :プロセスリストをスクロールします。
  • スペース :プロセスにタグを付けるか、タグを外します。
  • U –すべてのプロセスのタグを解除します(スペースキーで追加されたすべてのタグを削除します)。
  • s –プロセスシステムコールをトレースします。
  • F1 –ヘルプ
  • F2 –セットアップ
  • F3 –検索
  • F4 –フィルタリング:プロセスコマンドラインの一部を入力すると、名前が一致するプロセスのみが表示されます。
  • F5 –ツリービュー。
  • F6 –並べ替え。
  • F7 –選択したプロセスの優先度を上げます。これはスーパーユーザーのみが実行できます。
  • F8 –選択したプロセスの優先度を下げます。
  • F9 –プロセスを強制終了します。
  • F10 –終了します。

4。 lsof

Linux / Unixはすべてをファイルと見なし、フォルダーを維持します。したがって、「ファイルまたはファイル」 Linux/Unixでは非常に重要です。 Linux / Unixシステムで作業しているときに、使用されているファイルとフォルダーがいくつかある場合がありますが、それらの一部は表示され、一部は表示されません。
lsof コマンドは開いているファイルのリストの略です 。このコマンドは、開かれているファイルのリストを提供します。基本的に、それはどのプロセスによって開かれたファイルを見つけるための情報を提供します。 1回で、出力コンソールで開いているすべてのファイルが一覧表示されます。一般的な通常のファイルだけでなく、ディレクトリ、ブロック特殊ファイル、共有ライブラリ、文字特殊ファイル、通常のパイプ、名前付きパイプ、インターネットソケット、UNIXドメインソケットなどを一覧表示できます。 grepコマンドと組み合わせて、高度な検索と一覧表示を行うことができます。

構文:

lsof [option][user name]

例のあるオプション:

  • 開いているすべてのファイルを一覧表示します: このコマンドは、システム内の任意のプロセスによって開かれたすべてのファイルを一覧表示します。
lsof

ここでは、開かれているファイルの詳細があります。プロセスID、プロセスに関連付けられたユーザー、FD(ファイル記述子)、ファイルのサイズをすべて合わせて、コマンドによって開かれたファイル、プロセスID、ユーザー、そのサイズなどに関する詳細情報を提供します。

  • FD ファイル記述子として表します。
  • cwd :現在の作業ディレクトリ。
  • txt :テキストファイル。
  • mem :メモリファイル。
  • mmap :メモリマップドデバイス。
  • ユーザーが開いたすべてのファイルを一覧表示します: システムには複数のユーザーがいて、各ユーザーには異なる要件があるため、ファイルとデバイスを使用します。特定のユーザーが開いているファイルのリストを見つけるには、このコマンドが役立ちます。

構文:

lsof -u username

lsof -u qadry

上記の図では、コマンド lsof -u qadry ユーザーが開いたすべてのファイルを一覧表示します。それに加えて、ここでファイルの種類を確認できます。それらは次のとおりです。

  • DIR: ディレクトリ
  • REG: 通常のファイル
  • CHR: キャラクタースペシャルファイル
  • 特定のユーザーを除くすべてのユーザーが開いているすべてのファイルを一覧表示します: このコマンドを使用すると、すべてのプロセスとすべてのユーザーによって開かれたすべてのファイルを一覧表示できます。ただし、特定のユーザーを除くすべてのユーザーが開いているファイルのリストを検索する場合は、次を使用できます。

構文:

lsof -u ^root

与えられた図では、rootユーザーによって開かれたファイルがないことがわかります。

  • 特定のプロセスごとに開いているすべてのファイルを一覧表示します: このコマンドは、特定のプロセスによって開かれたすべてのファイルを一覧表示できます。 -c その後にプロセス名を付けると、コマンドで指定された特定のプロセスによって開かれたすべてのファイルを見つけることができます。
構文:
lsof -c crond

ここでは、ファイルとその説明がcrondプロセスによって開かれていることを確認できます。

  • 特定のプロセスによって開かれたすべての開いているファイルを一覧表示します: 各ファイルは、いくつかのプロセスIDに関連付けられています。特定のプロセスによって開かれるファイルが多数存在する可能性があります。 lsof -pプロセスIDを使用することにより、特定のプロセスによって開かれたファイルをチェックできます。

構文:

lsof -p process ID

lsof -p 2781
  • 他のすべてのPIDによって開かれたファイル: 上記の図のコマンドは、特定のプロセスIDによって開かれたファイルを一覧表示します。同様に、以下のコマンドオプションを使用して、特定のプロセスIDで開かれていないファイルのリストを見つけることができます。
構文:
lsof -p ^process ID
  • 親プロセスIDを一覧表示します: システムで実行されているプロセスは多数あり、それらは使用するためにファイルが開かれています。プロセスには多くの子プロセスが存在する可能性があり、このプロセスは親プロセスと呼ばれることもあります。親プロセスによって開かれたファイルのリストを見つけるには、Idlsofコマンドをオプション-Rとともに使用します。 。

構文:

lsof -R
  • ディレクトリによって開かれたファイル: 特定のディレクトリによって開かれるファイルを一覧表示します。システムにはファイルとディレクトリがあります。そのため、通常のファイルだけでなく、ディレクトリによって複数のファイルを開くことができます。

構文:

lsof -D directory path
  • ネットワーク接続によって開かれたファイル: 私たちのPC/システムは、さまざまな目的に役立つさまざまなネットワークを介して接続できます。 Linuxではすべてがファイルであることがわかっているので、システム内のいくつかのネットワーク接続によって開かれているファイルを確認することもできます。

構文:

lsof -i

例:

lsof -i tcp

この図では、TCPネットワークによって開かれたファイルを見ることができます。同様に、UDPなどを確認できます。

注: lsofコマンドの詳細については、次のマニュアルページを参照してください。

 man lsof

Linux
  1. システム管理者向けの30のLinuxプロセス演習

  2. UNIX / Linux:プロセスにシグナルを送信する 3 つの方法

  3. UNIX / Linux プロセス:C fork() 関数

  1. Linux – Initプロセス:すべてのプロセスの祖先?

  2. Linuxpsコマンド

  3. Ubuntu Linux でのプロセスの管理

  1. トップのヒント:LinuxでのCPU負荷の監視

  2. Linuxでプロセスを強制終了する方法は?終了するコマンド

  3. Linux:ゾンビ プロセスを見つけて強制終了する