Linuxの運用と保守の基本プロセス管理と環境構成分析

Linuxの運用と保守の基本プロセス管理と環境構成分析

1. プロセスの基本的な概要

プロセスとは、開始された実行可能プログラムの実行中のインスタンスです。

/proc ディレクトリの下の数字で名前が付けられたディレクトリはそれぞれプロセスを表し、プロセスの属性情報を格納します。

各プロセスのPIDは一意です。プロセスが終了したとしても、他のプロセスがそのPIDを占有することはありません。

2. プロセスの構成要素

  • 割り当てられたメモリのアドレス空間
  • 所有権の資格情報や権限などのセキュリティ属性
  • プログラムコードの実行スレッドは1つ以上
  • プロセスステータス

3. プロセス環境

  • ローカル変数とグローバル変数
  • 現在のスケジュールコンテキスト
  • ファイル記述子やネットワークポートなどの割り当てられたシステムリソース

4. プロセスステータス

ロゴカーネル定義の状態名と説明
R TASK_RUNNING: プロセスは CPU 上で実行中、または実行を待機中です。実行中(または実行可能)状態の場合、プロセスはユーザールーチンまたはカーネルルーチン(システムコール)を実行しているか、キューに登録されて実行準備が整っている可能性があります。
TASK_INTERRUPTIBLE: プロセスはスリープ状態にあり、ハードウェア要求、システム リソース アクセス、またはシグナルなどの条件を待機しています。イベントまたはシグナルがこの条件を満たすと、プロセスは実行状態に戻ります。
TASK_UNINTERRUPTIBLE: このプロセスもスリープ状態ですが、S 状態とは異なり、送信されたシグナルに応答しません。プロセスの中断により予期しないデバイス状態が発生する可能性がある特定の条件下でのみ使用してください。
TASK_KILLABLE: プロセスはスリープ状態です。これは割り込み不可能な D 状態と同じですが、シグナルに応答して待機中のタスクを割り込み (完全に終了) できるように変更されています。ユーティリティは通常、割り込み可能なプロセスを D 状態として表示します。
T TASK_STOPPED: プロセスは、通常、ユーザーまたは別のプロセスからのシグナルによって停止 (一時停止) されました。プロセスは別のシグナルによって実行状態に戻り、実行を継続できる(回復)
T TASK_TRACED: デバッグ中のプロセスも一時的に停止され、同じTステータスフラグを共有します。
EXIT_ZOMBIE: 子プロセスは終了時に親プロセスに信号を送ります。プロセスID(PID)以外のすべてのリソースが解放されます
バツEXIT_DEAD: 親プロセスが残りの子プロセス構造をクリーンアップ (取得) すると、プロセスは正常に解放されます。このステータスはプロセス一覧ユーティリティでは表示されません。
<優先度の高いプロセス
いいえ優先度の低いプロセス
+フォアグラウンドプロセスグループ内のプロセス
lマルチスレッドプロセス
sセッションプロセスヘッドプロセス

5. プロセスの優先順位

  • <0-139>: 数字が小さいほど優先度が高くなります。
  • <0-99>: リアルタイム優先度、カーネル調整
  • <100-139>: 静的優先度、ユーザー制御可能

6. プロセス管理コマンド

psコマンドは、現在のプロセスを一覧表示するために使用されます。詳細なプロセス情報を表示できます

[root@localhost ~]# ps -e
    PID TTY 時間 コマンド
      1 ? 00:00:02 システム
      2 ? 00:00:00 kthreadd


[root@localhost ~]# ps aux
ユーザー PID %CPU %MEM VSZ RSS TTY STAT 開始時刻 コマンド
ルート 1 0.0 0.6 179032 13504 ? Ss Nov03 0:02 /usr/lib/syst
ルート 2 0.0 0.0 0 0 ? S Nov03 0:00 [kthreadd]
ルート 3 0.0 0.0 0 0 ? I< Nov03 0:00 [rcu_gp]
ルート 4 0.0 0.0 0 0 ? I< Nov03 0:00 [rcu_par_gp]
ルート 6 0.0 0.0 0 0 ? I< Nov03 0:00 [kworker/0:0H
ルート 8 0.0 0.0 0 0 ? I< 11月03日 0:00 [mm_percpu_wq
ルート 9 0.0 0.0 0 0 ? S Nov03 0:00 [ksoftirqd/0]
ルート 10 0.0 0.0 0 0 ? R Nov03 0:00 [rcu_sched]
ルート 11 0.0 0.0 0 0 ? S Nov03 0:00 [migration/0]
ルート 12 0.0 0.0 0 0 ? S Nov03 0:00 [watchdog/0]
ルート 13 0.0 0.0 0 0 ? S Nov03 0:00 [cpuhp/0]
ルート 15 0.0 0.0 0 0 ? S Nov03 0:00 [kdevtmpfs]
ルート 16 0.0 0.0 0 0 ? I< Nov03 0:00 [netns]
ルート 17 0.0 0.0 0 0 ? S Nov03 0:00 [kauditd]
ルート 18 0.0 0.0 0 0 ? S Nov03 0:00 [khungtaskd]
ルート 19 0.0 0.0 0 0 ? S Nov03 0:00 [oom_reaper]
root 20 0.0 0.0 0 0 ? I< Nov03 0:00 [書き戻し]
ルート 21 0.0 0.0 0 0 ? S Nov03 0:00 [kcompactd0]
ルート 22 0.0 0.0 0 0 ? SN Nov03 0:00 [ksmd]
ルート 23 0.0 0.0 0 0 ? SN Nov03 0:00 [khugepaged]
ルート 24 0.0 0.0 0 0 ? I< Nov03 0:00 [暗号]
ルート 25 0.0 0.0 0 0 ? I< Nov03 0:00 [kintegrityd]
ルート 26 0.0 0.0 0 0 ? I< Nov03 0:00 [kblockd]
ルート 27 0.0 0.0 0 0 ? I< 11月03日 0:00 [tpm_dev_wq]
ルート 28 0.0 0.0 0 0 ? I< Nov03 0:00 [md]
ルート 29 0.0 0.0 0 0 ? I< Nov03 0:00 [edac-poller]
ルート 30 0.0 0.0 0 0 ? S Nov03 0:00 [watchdogd]
ルート 47 0.0 0.0 0 0 ? S Nov03 0:00 [kswapd0]
ルート 140 0.0 0.0 0 0 ? I< Nov03 0:00 [kthrotld]
ルート 141 0.0 0.0 0 0 ? S Nov03 0:00 [irq/24-pcieh
ルート 142 0.0 0.0 0 0 ? S Nov03 0:00 [irq/25-pcieh
ルート 143 0.0 0.0 0 0 ? S Nov03 0:00 [irq/26-pcieh
ルート 144 0.0 0.0 0 0 ? S Nov03 0:00 [irq/27-pcieh
ルート 145 0.0 0.0 0 0 ? S Nov03   
[root@localhost ~]# ps -ef
UID PID PPID C STIME TTY 時間 コマンド
ルート 1 0 0 Nov03 ? 00:00:02 /usr/lib/systemd/systemd --s
ルート 2 0 0 Nov03 ? 00:00:00 [kthreadd]
ルート 3 2 0 Nov03 ? 00:00:00 [rcu_gp]
ルート 4 2 0 Nov03 ? 00:00:00 [rcu_par_gp]
ルート 6 2 0 Nov03 ? 00:00:00 [kworker/0:0H-k

7.vmstat

仮想メモリステータス表示コマンド

vmstat 1000 // データは1000秒ごとに更新されることを示します
vmstat 1000 5 // 1000秒ごとに更新し、5回更新したら終了します

[root@localhost ~]# vmstat 1000
プロセス:
    r (実行中) // 実行を待機しているキューの長さ、つまり実行を待機しているプロセスの数を示します。 b (ブロック) // ブロックしているキューの長さ、つまり割り込み不可能なスリープ状態メモリにあるプロセスの数を示します。
    swpd // 使用されているスワップ メモリの合計量 free // 空き物理メモリの合計量 buffer // バッファ キャッシュに使用されているメモリの合計量 // キャッシュ スワップに使用されているメモリの合計量:
    si (スワップイン) // 物理メモリからスワップにスワップされたページ数、つまりデータがスワップに入るデータ速度 (kb/s) を示します。
    so (swap out) // スワップから物理メモリにスワップされるページ数、つまりデータがスワップから出るデータレート (kb/s) を示します。
io:
    bi (ブロックイン) // メモリにロードされるディスクブロックの数、つまりブロックデバイスからシステムにデータが読み込まれる速度 (kb/s) を示します。
    bo (ブロック アウト) // メモリからハード ディスクに同期されたディスク ブロックの数、つまり、データがブロック デバイスに保存される速度 (kb/s) を示します。
システム:
    in (割り込み) // 割り込みの数、つまり割り込みレート (kb/s) を示します。
    cs (コンテキストスイッチ) // コンテキストスイッチの数、つまりプロセススイッチングレート (kb/s) を示します。
CPU:
    us // ユーザー空間を示します sy // カーネル空間を示します id // アイドル率を示します wa // IO が完了するのを待つのに費やされた時間の割合を示します st // 仮想化技術によって奪われた時間 (仮想マシンの実行など) を示します

8. バックグラウンドジョブの実行

// コマンドの後に & 記号を追加すると、バックグラウンドジョブが生成されます [root@localhost ~]# sleep 1000 &
[1] 1400
//jobsコマンドは現在実行中のバックグラウンドジョブをすべて表示するために使用されます [root@localhost ~]# jobs
[1]+ ランニングスリープ1000 &
//fgコマンドはバックグラウンドジョブをフォアグラウンドに転送するために使用されます [root@localhost ~]# fg
//バックグラウンドジョブが 1 つだけの場合は、パラメータなしで直接 fg コマンドを使用して、バックグラウンドジョブをフォアグラウンドにします。ただし、ジョブが複数ある場合は、上記のコマンド実行結果の [] で囲まれた番号である %+ジョブ番号を後に付ける必要があります。
[root@localhost ~]# ジョブ
[1]- ランニングスリープ1000&
[2]+ ランニングスリープ500 &
[root@localhost ~]# fg %1
// ctrl+z を使用してフォアグラウンド プロセスをバックグラウンドに送信すると、この時点でジョブが停止します [root@localhost ~]# fg %1
睡眠1000
^Z
[1]+ 睡眠停止 1000
//停止したバックグラウンドジョブを再開するには、bg コマンド + ジョブ番号を使用します [root@localhost ~]# bg %1
[1]+睡眠1000&
[root@localhost ~]# ジョブ
[1]- ランニングスリープ1000&
[2]+ ランニングスリープ500 &
//kill とジョブ番号を指定すると、指定したジョブを手動で強制終了できます [root@localhost ~]# jobs
[1]- ランニングスリープ1000&
[2]+ ランニングスリープ500 &
[root@localhost ~]# %1 を強制終了する
[1]- 睡眠終了 1000
[root@localhost ~]# ジョブ
[2]+ ランニングスリープ500 &
//ジョブコマンドの結果 + //コマンドはジョブのデフォルト操作になります - //コマンドはジョブの2番目のデフォルト操作になります

以上がLinux運用保守の基本的なプロセス管理と環境構成分析の詳細な内容です。Linuxプロセス管理と環境構成の詳細については、123WORDPRESS.COMの他の関連記事に注目してください。

以下もご興味があるかもしれません:
  • Linux の操作とメンテナンスの基本的なスワップ パーティションと LVM 管理のチュートリアル
  • Linux の操作とメンテナンスの基本システムディスク管理チュートリアル
  • Linuxの運用と保守、基本的なプロセス管理、リアルタイム監視と制御
  • Linux の操作とメンテナンスの基本 httpd 静的 Web ページ チュートリアル

<<:  layui をベースにしたログインページの実装

>>:  ウェブページのフッターで注意すべきことのまとめ

推薦する

Vueはページキャッシュ機能を実装する

この記事の例では、ページキャッシュ機能を実装するためのVueの具体的なコードを参考までに共有していま...

Gitlab実践チュートリアルでは、関連する設定操作にgit configを使用します。

この記事では、実際に発生した問題をもとに、git の設定に関する内容を紹介します。コマンド: git...

MySQL ディープ ページング (数千万のデータを素早くページ分割する方法)

目次序文場合最適化まとめ序文バックエンド開発では、一度に大量のデータがロードされ、メモリやディスク ...

CSS3のfocus-withinセレクタの使用

擬似要素と擬似クラスところで、まずは疑似クラスセレクターと疑似要素セレクターについておさらいしておき...

CSSで検索ボックスを非表示にする機能を実装します(アニメーション順方向と逆方向のシーケンス)

上部のメニュー バーに検索ボックスを配置するのは一般的なシナリオですが、検索機能がそれほど頻繁に使用...

js を使用してネットワークカメラを呼び出し、一般的なエラーを処理します

最近、業務上の理由により、Web ページ上のさまざまなネットワーク カメラにアクセスしてデバッグする...

Centos ベースイメージの作成方法

序文現在、私の会社で使用しているオペレーティングシステムはすべて CentOS7.4 で、アプリケー...

JS 実用的なオブジェクト指向スネークゲームの例

目次考える1. 貪欲な蛇の効果画像2. スネークの分析2.1 ゲーム開始機能2.2 運動機能2.2....

MySQL の最適化: 高品質の SQL 文を書く方法

序文インターネット上にはデータベースの最適化に関する情報や方法が数多くありますが、その多くは品質にば...

MySQL 外部キー制約の例の説明

MySQL の外部キー制約は、2 つのテーブル間のリンクを確立するために使用されます。 1 つのテー...

MySQL の日付型の単一行関数コードの詳細な説明

MySQL の日付型単一行関数: CURDATE()またはCURRENT_DATE()は現在の日付を...

Ubuntu 16.04 にソースコードから Mininet をインストールする

ミニネットMininet は軽量のソフトウェア定義ネットワークおよびテスト プラットフォームです。軽...

MySQL タイムブラインドインジェクションの 5 つの遅延方法

MySQL タイム ブラインド インジェクションの 5 つの遅延方法 (PWNHUB の予期しない解...

Linux システムのユーザー管理コマンドの概要

ユーザーとグループの管理1. ユーザーとグループの基本概念ユーザーとグループ:システム上のすべてのプ...

Linuxのwhichコマンドの具体的な使い方

Linux でファイルを見つけたいのに、その場所がわからないことがよくあります。次のコマンドを使用し...