Windows system >> Windowsの知識 >  >> Linuxシステムチュートリアル >> Linuxについて >> Linuxシステムのプロセス間の関係は何ですか?

Linuxシステムのプロセス間の関係は何ですか?

  
                

Linuxシステム管理者として、プロセスをよりよく管理するためには、プロセス間の関係について詳しく理解する必要があります次の小シリーズでは、Linuxプロセス間の関係を紹介し、一緒に学びます。行きましょう。

Linuxプロセスは互いに一定の関係を持っています。たとえば、Linuxプロセスベースでは、各プロセスに親プロセスがあり、すべてのプロセスがinitプロセスをルートとして使用してツリー構造を形成しています。プロセスグループとセッションを説明して、プロセスをより豊かに管理します。

プロセスグループ

各プロセスは1つのプロセスグループに属し、各プロセスグループは複数のプロセスを含むことができます。プロセスグループはプロセスグループリーダーを持ち、リーダープロセスのPID(Linuxプロセスベースを参照)はプロセスグループを識別するためのプロセスグループID(PGID)になります。

コードは次のとおりです。

$ ps -o pid、pgid、ppid、comm  Cat "/p" "p" PID PGID PPIDコマンド

17763 17763 17751 bash

18534 18534 17763 ps

18535 18534 17763 cat

PIDはプロセス自体のID、PGIDはプロセスが配置されているプロセスグループのID、PPIDはプロセスのプロセスIDです。以上の結果から、我々は次のような関係を推測することができます

の矢印は、親プロセスがフォークとexec機構により、子プロセスを生成を示しています。 psとcatはどちらもbashの子プロセスです。プロセスリーダーのリーダープロセスのPIDがプロセスグループIDになります。リーダーシッププロセスは最初に終了することができます。この時点で、プロセスグループはまだ存在し、プロセスグループ内の最後のプロセスが終了するまで同じPGIDを保持しています。

いくつかのプロセスをプロセスグループとして分類する重要な理由は、シグナルをプロセスグループに送信できることです。このシグナルは、プロセスグループ内のすべてのプロセスによって受信されます。これについては次のセクションで詳しく説明します。

セッション

さらに、ジョブ制御をサポートするシェルの場合は、複数のプロセスグループでセッションを形成することもできます。 Bash(Bourne-Againシェル)は作業制御をサポートしますが、sh(Bourneシェル)はサポートしません。

セッションリーダーと呼ばれるプロセスによってセッションが確立されます。セッションリーダープロセスのPIDは、セッションを識別するSID(セッションID)になります。セッション内の各プロセスグループはジョブと呼ばれます。セッションは、セッションのフォアグラウンド作業からなる1つのプロセスを持つことができますが、他のプロセスグループはバックグラウンド作業です。各セッションは制御端末に接続できます。制御端末に入出力があると、セッションのフォアグラウンド・プロセス・グループに渡されます。 CTRL + Z、CTRL + \\など、端末によって生成されたシグナルは、フォアグラウンドプロセスグループに渡されます。

セッションの意味は、1つの端末に複数の作業を含め、そのうちの1つを直接入力として使用し、端末の入出力と端末の信号を受け取ることです。他の作業はバックグラウンドで実行されます。

最後に&を追加することで、バックグラウンドでコマンドを実行できます。

コードは次のとおりです。

$ ping localhost》 log&

ターミナルが表示されます。

コードは次のとおりです。

[1] 10141

かっこ内の1はジョブ番号を示し、10141はPGIDです。

次のように詳細な情報が照会されます。

コードは以下のとおりです。

$ ps -o pid、ppid、sid、tty、comm

(ttyは制御端末を表します) )

次のようにシグナルをkill

に渡すことができます。

$ kill -SIGTERM -10141

または

コードは次のとおりです。

$ kill -SIGTERM%1

がワークグループに送信されます。上記の2つのコマンドは、1つはPGIDに送信され(PIDの代わりにPGIDであることを示すためにPGIDの前に - を追加することによって)、1つは作業1(%1)に送信されます。

$ fgを使用して、バックグラウンド作業からフォアグラウンド作業にジョブを変更できます。

コードは次のとおりです。

$ cat》 log&

$ fg% 1

最初のコマンドを実行すると、作業がバックグラウンドで行われているためコマンドを入力できません。作業を前面に表示するまで、catコマンドを入力できます。入力が完了したら、Ctrl + Dキーを押してシェル入力の終わりを知らせます。

プロセスグループ(作業)の概念は比較的簡単です。セッションは主に端末用に構築されています。複数のターミナルウィンドウを開くと、実際には複数のターミナルセッションが作成されます。各セッションには、独自のフロントデスク業務とバックグラウンド業務があります。このようにして、プロセスに一定レベルの管理と運用を追加しました。グラフィカルインタフェースのない時代には、セッションを使用することで、ユーザーはシェルを介して複数レベルのプロセスを開始および管理できます。たとえば、シェルを介して複数のバックグラウンドジョブを開始することができますが、現時点では標準入力と標準出力が占有されていなくても、他の作業を続行できます。今日では、グラフィカルインタフェースによってこのニーズに対処することができますが、Linuxの多くの場所でワークグループとセッションメカニズムが依然として使用されています。

概要

プロセスグループ、pgid

セッション、sid、ジョブ、forground、背景

fg、kill -pid、&、%

上記はLinuxプロセス間の関係ですが、実際にはプロセス間に一定の関係がありますが、各プロセスはプロセスグループに属していますが、プロセス間の関係についてある程度理解していますか。

Copyright © Windowsの知識 All Rights Reserved