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 をベースにしたログインページの実装

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

推薦する

XHTML 入門チュートリアル: フォーム タグ

<br />フォームはユーザーが情報を送信するための重要なチャネルです。このセクションで...

DockerToolBox ファイルマウント実装コード

docker を使用すると、ファイルをマウントできない場合があります。これは、仮想マシンの共有フォル...

Linux でファイルの種類を理解して識別する方法

序文ご存知のとおり、Linux ではハードディスクやグラフィック カードなどすべてがファイルです。 ...

Linux の一般的なテキスト処理コマンドと vim テキストエディタ

今日は、いくつかの一般的なテキスト処理コマンドとvimテキストエディタを紹介します。 3日目 - 一...

Vue の 2 択タブバー切り替えの新しいアプローチ

問題の説明プロジェクトに取り組んでいるときに、タブ バーの切り替え効果を作成する必要がある場合があり...

Vue でカスタムパスのエイリアスを設定する方法

Vue でカスタム パス エイリアスを設定する方法日常の開発では、モジュールやコンポーネントをインポ...

Linux で固定 IP を設定する方法 (テスト済みで効果的)

まず、仮想マシンを開きます xshell5 を開いて仮想マシンに接続します (より便利です。Linu...

MySQLの連結関数CONCATの使い方の詳しい説明

前回の記事では、MySQL の置換関数 (Replace) とセグメンテーション関数 (SubStr...

React 合成イベントの説明

目次入力ボックスをクリックして開始します拡張機能入力ボックスをクリックすると複数のイベントが発生しま...

1時間で学ぶMySQLの基礎

目次MySQL を使い始めるMySQL 管理6. MySQL サーバーを起動および停止します。 7....

ハイパーリンクを使用してリンクファイルを開く HTML 方式の紹介

a および href 属性 HTML では、英語ではアンカーと呼ばれるハイパーリンクを表すために &...

Docker で ElasticSearch と Kibana をインストールするためのサンプル コード

1. はじめにElasticsearchは現在非常に人気があり、多くの企業が利用しているため、esを...

MySQL が my.cnf を読み込む順序の詳細

目次MySQLがmy.cnfを読み込む順序1. mysql.server の起動方法2. mysql...

bash スクリプトで ssh/scp コマンドにパスワードを渡す方法の詳細な説明

SSHPASSをインストールする最新のオペレーティング システムでは、sshpass パッケージはデ...

Vue3 を使用して虫眼鏡効果を実現する方法の例

目次序文1. カプセル化の重要性2. どのようにカプセル化しますか? 1. 準備2. 梱包を開始する...