ホームページ  >  記事  >  運用・保守  >  Linuxデーモンとは何ですか

Linuxデーモンとは何ですか

青灯夜游
青灯夜游オリジナル
2022-02-25 15:51:237003ブラウズ

Linux では、デーモン プロセスは「elf プロセス」とも呼ばれます。これはバックグラウンドで実行され、端末によって制御されない特別なプロセスです。特定のシステム タスクを実行するために使用されます。デーモン プロセスは制御端末から独立しており、特定のイベントが発生すると定期的に実行します。

Linuxデーモンとは何ですか

#このチュートリアルの動作環境: linux5.9.8 システム、Dell G3 コンピューター。

デーモンプロセスの定義

デーモンプロセスはデーモンプロセス(Daemon)とも呼ばれ、バックグラウンドで動作するプロセスです。特定のシステム タスクを実行するために使用される特別なプロセス。多くのデーモンはシステムの起動時に開始され、システムがシャットダウンされるまで実行されます。必要な場合にのみ開始され、タスクが完了すると自動的に終了するものもあります。

これは制御端末から独立しており、発生する特定のイベントを定期的に実行します。デーモンは非常に便利なプロセスです。ほとんどの Linux サーバーはデーモン プロセスを使用して実装されています。

Linux システムが起動すると、多くのシステム サービス プロセスが起動されますが、これらのシステム サービス プロセスには制御端末がなく、ユーザーと直接対話することはできません。他のプロセスは、ユーザーのログインまたはプログラムの実行時に作成され、操作の終了またはユーザーのログアウト時に終了しますが、システム サービス プロセス (デーモン プロセス) はユーザーのログインおよびログアウトの影響を受けず、常に実行されます。ランニング。この種のプロセスにはデーモンと呼ばれる名前が付いています。

ps axj コマンドを使用して、システム内のプロセスを表示しましょう。パラメータ a は、現在のユーザーのプロセスだけでなく、他のすべてのユーザーのプロセスも示します。パラメータ x は、制御端末のあるプロセスだけでなく、制御端末のないすべてのプロセスも示します。パラメータ j は、リストを示します。およびジョブ制御関連情報。

Linuxデーモンとは何ですか

(1) TPGID 列に -1 があるものは、端末を制御しないプロセス、つまりデーモン プロセスです。 2) COMMAND 列の [ ] で囲まれた名前はカーネル スレッドを表します。これらのスレッドはカーネル内で作成され、ユーザー空間コードがないため、プログラム ファイル名やコマンド ラインはありません。k で始まる名前は通常、次の目的で使用されます。カーネルを表します;

(3) init プロセスについてはすでによく理解しています。udevd は /dev ディレクトリ内のデバイス ファイルを維持する責任を負い、acpid は電源管理を担当し、syslogd は以下のログ ファイルを維持する責任を負います。 /var/log;

(4) デーモン プロセスの名前は通常、デーモンを意味する d で終わることに注意してください。

デーモンプロセスの特徴

(1) Linuxでは、各システムがユーザーと通信するためのインターフェースがターミナルとなり、このターミナルから実行されるすべてのプロセスがアタッチされます。この端末に対して、この端末をこれらのプロセスの制御端末と呼びます;

(2) 制御端末が閉じられると、対応するプロセスは自動的に閉じられます。しかし、デーモン プロセスはこの制限を突破することができ、ターミナルから切り離されてバックグラウンドで実行されます (ターミナルから切り離される目的は、プロセス実行中の情報がターミナルに表示されないようにするためです。

は、どの端末によっても生成されません。端末情報によって中断されます)、実行されると実行を開始し、システム全体がシャットダウンされるまで終了しません (もちろん、対応するデーモン プロセスを強制終了すると考えることもできます)。

(3) プロセスがユーザーや中断、その他の変更の影響を受けない場合は、プロセスをデーモン プロセスに変える必要があります。

プロセス、プロセス グループ、セッション、および制御端末の間の関係

デーモン プロセスの作成にはこれらの環境パラメーターを変更する必要があるため、理解しておくことが非常に重要です。重要:

Linuxデーモンとは何ですか

    プロセス グループ: 1 つ以上のプロセスで構成され、プロセス グループ番号 (GID) がこれらのプロセスのプロセス グループ リーダー PID。
  • セッション: 実際にはセッションと呼ばれ、期間中のすべてのプロセス グループが含まれます。通常、セッションはユーザーがログインすると開始されます。一般に、ログインはシェル端末であるため、シェルターミナル このセッションの最初のプロセスでもあり、セッションは通常ログアウトで終了します。非プロセス リーダーの場合、setsid() を呼び出して新しいセッションを作成できます。
  • 制御端末 (tty): 通常、シェル端末を指します。セッション中に存在する場合と存在しない場合があります。

デーモン プロセスの作成デーモン プロセスを作成する際の最も重要な手順は、setsid 関数を呼び出して次のことを行うことです。新しいセッション リーダーを作成します。

#includepid_t setid(void);//该函数调用成功时返回新创建的Session的id(其实也就是当前进程的id),出错返回-1。

この関数を呼び出す前に、現在のプロセスはプロセス グループのリーダーになることが許可されていないことに注意してください。そうでない場合、関数は -1 を返します。また、現在のプロセスがプロセス グループのリーダーではないことを確認するのも簡単で、最初に fork してから setsid を呼び出すだけです。フォークによって作成された子プロセスは、親プロセスと同じプロセス グループにあります。プロセス グループのリーダーはグループの最初のプロセスである必要があるため、子プロセスをグループの最初のプロセスにすることはできません。子プロセスですので問題ありません。

この関数を正常に呼び出した結果は次のようになります:

(1) 新しいセッションを作成します。現在のプロセスがセッション リーダーで、現在のプロセスの ID がセッション ID です。

(2) 新しいプロセス グループを作成します。現在のプロセスはプロセス グループのリーダーであり、現在のプロセスの ID はプロセス グループの ID です。

(3) 現在のプロセスの ID はプロセス グループの ID です。プロセスは元々制御端子を持っていますが、この端子を失い、制御端子を持たないプロセスとなります。 (いわゆる制御端末の紛失とは、元の制御端末がまだ開いていて読み書きできるが、それは制御端末ではなく、単に通常の開いているファイルであることを意味します)。

デーモン プロセスを強制終了する方法

1. まず ps axj | grep デーモン名 を実行して、対応するデーモンを見つけますプロセスを実行し、kill -9 デーモン プロセス名 を使用して kill;

2. ps -ef コマンドを使用して、対応するデーモン プロセスを検索し、次を使用します。 kill -9 コマンドで強制終了;

3. プロセスの起動、シャットダウン、再起動を自動的に管理するシェル スクリプトを作成します。

関連する推奨事項: 「Linux ビデオ チュートリアル

以上がLinuxデーモンとは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。