[Linuxの基本の紹介](14)Linuxプロセス管理

1はじめに

コンテンツ

  • Linuxが提供するツールのいくつかを習得して、プロセスを表示および制御します。これらのツールを習得すると、問題を解決するために、一部のプロセスが異常なときに関連するインジケーターを表示できます。

知識のポイント

  • プロセスの実行ステータスを表示する
  • プロセス制御の終了
  • プロセスの実行順序

2プロセスのビュー

プロセスの異常が発生することは避けられないため、Linuxにはプロセスのステータス情報を表示するためのツールがいくつか用意されています。上部リアルタイムでプロセスの状態、ならびにシステムの一部の情報を表示する(例えば、CPU、メモリ情報など)は、私たちもでき静的現在のプロセス情報表示を介してPSを、我々は使用することもできpstreeは、現在アクティブなプロセス構造のツリーを表示します。

2.1トップツールの使用

一番上のツールは、システムのいくつかの重要な情報の変更をリアルタイムで表示できる、一般的に使用されている表示ツールの1つです。

top

ここに画像の説明を挿入
topはフォアグラウンドで実行されるプログラムであるため、実行後、このようなインタラクティブなインターフェイスに入ります。インタラクティブなインターフェースでは、いくつかの指示に従って操作およびフィルタリングできます。その前に、まずどのような情報が表示されるかを理解しましょう。

最初の行が上に表示されます

コンテンツ 説明
現在のプログラムの名前を示します
11:29:56 現在のシステム時刻を示します
2:32まで マシンが起動された時間(日数を含む)を示します
1ユーザー 現在のシステムにユーザーが1人しかいないことを示します
負荷平均:0.28,0.14,0.05 1、5、および15分でのCPUの平均負荷に対応

ウィキペディアでの負荷平均の説明は、システム負荷はコンピューターシステムが実行している作業量の尺度であり、現在のCPUワークロードの尺度であり、具体的には、実行キューの平均の長さを指します。待機中CPUの平均プロセス数に関連する計算値。

この負荷平均データをどのように表示する必要がありますか?

システムがシングルCPUとシングルコアであると仮定して、それを一方向ブリッジと比較し、CPUタスクを自動車と比較します。

  • load = 0の場合、このブリッジに車がなく、CPUにタスクがないことを意味します。
  • 負荷が1未満の場合、ブリッジに車があまりないことを意味しますが、すべてが非常にスムーズで、CPUに多くのタスクがなく、リソースはまだ十分です。
  • 負荷= 1の場合、橋が車でいっぱいになり、ギャップがなく、CPUがフル稼働し、すべてのリソースが使い果たされていることを意味します。もちろん、それはまだ能力の範囲内ですが、少し遅い
  • 負荷が1より大きい場合は、橋がすでに車で占められているだけでなく、橋の外側も占有されていることを意味します。CPUはフル稼働しており、システムリソースが使い果たされていますが、まだ多数あります。要求し、待っているプロセスの。この値が2より大きいか3より大きい場合は、プロセス要求がCPUの作業容量を2〜3倍超えていることを意味します。この値が5より大きい場合は、システムが過負荷になっていることを意味します。

これは、単一のコアを備えた単一のCPUの場合であり、実際には、取得した値をコアの数で割る必要があります。次のコマンドを使用して、CPUとコアの数を表示できます

#查看物理CPU的个数
cat /proc/cpuinfo |grep "physical id"|sort |uniq|wc -l

#每个cpu的核心数
cat /proc/cpuinfo |grep "physical id"|grep "0"|wc -l

シングルコア負荷の臨界値は1ですが、実際には、経験豊富な運用および保守またはシステム管理者が臨界値を0.7に設定します。ここでの指数はすべてコアの数で除算されます

  • 負荷が0.7未満の場合、彼には注意が払われません。
  • 0.7 <load <1の場合、少し注意を払う必要があります。処理は可能ですが、この値は臨界点からそれほど遠くありません。
  • 負荷= 1の場合、現時点ではリソースがなくなっており、すでに最善を尽くしているため、注意が必要です。
  • 負荷が5を超える場合、システムはほぼ停止しています。この時点で問題を解決するには、残業する必要があります。

通常、最初に15分の値を調べてこの一般的な傾向を確認し、次に5分の値の比較を調べて下降傾向があるかどうかを確認します。

上位データの2行目を見てみましょう。基本的に、2行目はプロセスの統計です。

コンテンツ 説明
タスク:合計296 プロセスの総数
2ランニング 2つの実行中のプロセス
222眠っている 222の睡眠プロセス
1停止 1つの停止したプロセス
1ゾンビ 1ゾンビプロセス

上位データの3行目は、基本的にCPU使用率の統計です。

コンテンツ 説明
CPU:2.0%us ユーザースペースプロセスが占有するCPUの割合
0.8%sy カーネルスペース操作によって占有されているCPUの割合
0.0%ni ユーザープロセススペースで優先度を変更したプロセスが占めるCPUの割合
97.2%id 空きCPUの割合
0.0%wa 入力と出力を待機しているCPU時間の割合
0.0%hi ハード割り込み(ハードウェアIRQ)がCPUの割合を占める
0.0%はい ソフトウェア割り込み(ソフトウェアIRQ)によって占有されているCPUの割合
0.0%st (スチール時間)は、ハイパーバイザーなどの仮想サービスで仮想CPUが実際のCPUを待機する時間の割合です。

CPU使用率は、一定期間のCPU使用率の統計です。このインジケーターを使用すると、一定期間のCPUの占有率を確認できます。負荷平均はCPUの負荷であり、そこに含まれる情報はCPU使用率ではありません。レートステータス。ただし、CPUが一定期間内にCPUを処理し、待機しているプロセス数の統計情報。これら2つのインジケーターは同じではありません。

topデータの4行目は、メモリ使用量の統計です

コンテンツ 説明
2017496合計 総物理メモリ
1329432使用 使用された物理メモリの合計
101472無料 空きメモリの合計量
586592バッファ カーネルキャッシュとして使用されるメモリの量

注:システムで使用可能な最大物理メモリーは、freeの単一の値ではなく、free +バッファー+スワップにキャッシュされた合計と太字のスタイルです。

top 5行目のデータは、交換エリアの使用状況の統計です。

コンテンツ 説明
合計 総交換面積
中古 使用された交換エリアの合計
自由 フリースワップエリアの合計
キャッシュされた バッファリングされたスワップ領域の合計量、メモリの内容はスワップ領域にスワップアウトされてからメモリに戻されますが、使用されたスワップ領域は上書きされていません

以下はプロセスの状況です

列名 説明
PID プロセスID
ユーザー プロセスを所有するユーザー
PR プロセス実行優先度の優先度値
NI プロセスの素晴らしい価値
VIRT このプロセスタスクで使用される仮想メモリの合計量
RES プロセスによって使用される物理メモリの数。常駐メモリの数とも呼ばれます。
SHR プロセスの共有メモリのサイズ
S プロセスの状態:S =スリープR =実行中Z =ゾンビ
%CPU プロセスのCPU使用率
%MEM プロセスメモリの利用
TIME + プロセスがアクティブな合計時間
コマンド 実行中のプロセスの名前

NICE値は静的優先度と呼ばれ、ユーザースペースでの優先度値であり、その値の範囲は-20〜19です。値が小さいほどプロセスの「優先度」が高くなり、値が大きいほど「優先度」が低くなります。良い値は-20から19で、中間の-20が最高の優先度、0がデフォルト値、19が最低の優先度です。

PR値は、優先度の値が動的優先度と呼ばれることを示します。これは、カーネル内のプロセスの実際の優先度の値です。プロセスの優先度の値の範囲は、名前がMAX_PRIOで値が140のマクロによって定義されます。Linuxは、実際には0〜139の範囲の140の優先度範囲を実装しています。値が小さいほど、優先度は高くなります。その中で、0〜99はリアルタイムのプロセス値であり、100〜139はユーザー用です。

その中で、PRの100〜139の値は対応するPR = 20 +(-20〜 + 19)であり、-20〜 + 19が適切な値であるため、両方が優先されますが、数千の関係があります。 、しかしそれらの価値と行動の範囲は同じではありません

トップはフォアグラウンドプログラムであるため、インタラクティブにすることができます。

インタラクティブコマンド 説明
q プログラムを終了します
平均負荷と起動時間情報の表示を切り替えます
P 根据 CPU 使用百分比大小进行排序
M 根据驻留内存大小进行排序
i 忽略闲置和僵死的进程,这是一个开关式命令
k 终止一个进程,系统提示输入 PID 及发送的信号值。一般终止进程用 15 信号,不能正常结束则使用 9 信号。安全模式下该命令被屏蔽。

好好的利用 top 能够很有效的帮助我们观察到系统的瓶颈所在,或者是系统的问题所在。

2.2 ps 工具的使用

ps 是最常用的查看进程的工具之一,我们通过这样的一个命令来了解一下,他能给我带来哪些信息

ps aux

ここに画像の説明を挿入

ps axjf

ここに画像の説明を挿入
我们来总体了解下这些信息又代表着什么

内容 解释
F 进程的标志(process flags),当 flags 值为 1 则表示此子程序只是 fork 但没有执行 exec,
为 4 表示此程序使用超级管理员 root 权限
USER 进程的拥有用户
PID 进程的 ID
PPID 其父进程的 PID
SID session 的 ID
TPGID 前台进程组的 ID
%CPU 进程占用的 CPU 百分比
%MEM 占用内存的百分比
NI 进程的 NICE 值
VSZ 进程使用虚拟内存大小
RSS 驻留内存中页的大小
TTY 终端 ID
S or STAT 进程状态
WCHAN 正在等待的进程资源
START 启动进程的时间
TIME 进程消耗 CPU 的时间
COMMAND 命令的名称和参数

其中的 D 是不能被中断睡眠的状态,处在这种状态的进程不接受外来的任何 signal,所以无法使用 kill 命令杀掉处于 D 状态的进程,无论是 killkill -9 还是 kill -15,一般处于这种状态可能是进程 I/O 的时候出问题了。

ps 工具有许多的参数,下面给大家解释部分常用的参数

使用 -l 参数可以显示自己这次登录的 bash 相关的进程信息罗列出来

ps -l

ここに画像の説明を挿入
相対的に言えば、次のコマンドをより頻繁に使用すると、すべてのプロセス情報が一覧表示されます

ps aux

プロセスの1つを見つける場合は、grepや正規表現で使用することもできます。

ps aux | grep zsh

ここに画像の説明を挿入
また、表示できる場合は、プロセスの一部を含むツリーとして表示されます。

ps axjf

ここに画像の説明を挿入必要なパラメータ表示をカスタマイズすることもできます

# 逗号后面不要留空格
ps -afxo user,ppid,pid,pgid,command

ここに画像の説明を挿入

2.3pstreeツールの使用

pstreeを使用すると、同じ数のプロセスを直接確認できます。最も重要なことは、すべてのプロセス間の相関関係を確認できることです。

pstree

ここに画像の説明を挿入

pstree -up

#参数选择:
#-A  :各程序树之间以 ASCII 字元來連接;
#-p  :同时列出每个 process 的 PID;
#-u  :同时列出每个 process 的所屬账户名称。

ここに画像の説明を挿入

3プロセス管理

3.1killコマンドの習得

プロセスが終了するか、異常終了しようとすると、プロセスは親プロセスに戻るか、SIGHUPシグナルを受信して​​、プロセスを終了するか、他の操作を実行します。このSIGHUPシグナルは、システムから送信できるだけでなく、killを使用して送信できます。この信号は、操作プロセスなどを終了または再開します。

前回のレッスンでは、killコマンドを使用して一部のジョブを管理しました。このレッスンでは、killを使用して、ジョブカテゴリに属さない一部のプロセスを操作し、pidを直接攻撃します。

#首先使用图形界面打开了 gedit、vim,用 ps 可以查看到
ps aux

#使用9这个信号强制结束 gedit 进程
kill -9 4561

#我们再查找这个进程的时候就找不到了
ps aux | grep gedit

ここに画像の説明を挿入

3.2プロセスの実行シーケンス

psコマンドを使用すると、ほとんどのプロセスが休止状態にあることがわかります。これらのプロセスが起動された場合、CPUのサービスを最初に享受するのは誰で、後続のプロセスはどのような順序である必要がありますか?プロセススケジューリングキューはどのように配置する必要がありますか?

もちろん、プロセスの優先度の値は、プロセスのスケジューリングの優先度を決定するために使用されます。優先度の値はPRであり、制御および反映するために上記で説明しました。

niceの値は、niceコマンドを使用して変更できます。また、nice値の範囲は-20から19まで調整できます。ここで、rootは、独自のプロセスまたは他のユーザーのプログラムを調整できる最高の能力を備えています。 、およびすべての値を使用できますが、通常のユーザーは自分のプロセスのみを調整でき、通常のユーザーがシステムリソースをプリエンプトするのを防ぐためにシステムが制限を設定しているため、使用範囲は0〜19のみです。

#打开一个程序放在后台,或者用图形界面打开
nice -n -5 vim &

#用 ps 查看其优先级
ps -afxo user,ppid,pid,stat,pri,ni,time,command | grep vim

reniceを使用して、既存のプロセスの優先度を変更することもできます

renice -5 pid

ここに画像の説明を挿入

4まとめ

必要な情報を取得するために、プロセス表示コマンドps、pstree、top、およびこれらのコマンドを使用したときに取得した情報の意味を学習し、同時にプロセス管理コマンドkill、nice、reniceを学習しました。

おすすめ

転載: blog.csdn.net/happyjacob/article/details/107051107