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プロセス間の関係ですが、実際にはプロセス間に一定の関係がありますが、各プロセスはプロセスグループに属していますが、プロセス間の関係についてある程度理解していますか。
一部のLinuxユーザーVSFTPを使用するためには、500 OOPSをVSFTP会っ:ディレクトリを変更することはできません:/ホーム/この問題を、あなたが方法がわからない場合ので、今日の小さなは特別に、皆のために、この問題への解決策をもたらしましたあなたがそれを解決するならば、そして見てください。
VSFTPインストールされているソフトウェアの後、プロンプトFTPログ
grepのFTP ftpd_disable_trans&のndash;>オフ または ftp_home_dir&のndash;> setsebool を使用して、オフ //オープ
RedHatシステムでは、プログラミングが必要なため、システムにJDKをインストールする必要があります。インストールにコマンドを使用する必要があるため、インストール方法がわからないため、次の小シリーズ
uGetは、LinuxのThunderに似たダウンロード成果物で、新しいバージョンのuGet2にはより多くの変更が加えられており、さまざまな面で改善されています。 uGet2ツールをインストールして一
Linuxでvmstatコマンドを使用すると、仮想メモリの統計情報を報告することができますまた、vmstatコマンドの使用法は数多くあります。あなたが理解を持っているように詳細な紹介。 これは、シ
Ubuntu install Texmaker FAQまとめ
LinuxでAlibaba CloudサーバーのFTP設定を実行する方法
それが辞書の単語に基づいているLinuxパスワードプロンプトを変更します。
Linux MemcacheQのコンパイルとインストール方法
Linuxのrmコマンドで削除されたファイルをゴミ箱に入れる方法
Linuxはgzip:stdin:tar.gzファイルを解凍するときにプロンプトを出しませんか?
Linuxのルーティングと転送機能を使用してインターネットを共有する
Linuxインストールvagrantプロセスで問題が発生しました
Ubuntuのsudoエラーコマンドがどうやってやればいいの?