記事のディレクトリ
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 状态的进程,无论是 kill,kill -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を学習しました。