Linuxシステムを使っていると、「デーモン(Daemon)」や「systemdユニット(Unit)」という言葉をよく目にします。どちらもLinuxオペレーティングシステムにおいて重要な役割を担っていますが、意味や機能は同じではありません。この記事では、初心者にもわかりやすいように、デーモンとsystemdユニットの概念、違い、そして種類について解説します。 #### 1. デーモン(Daemon)とは? デーモンとは、バックグラウンドで動作するプログラムのことです。ユーザーが直接起動しなくても自動的に立ち上がり、システム上の特定の機能を継続的に担います。主な用途としては、Webサーバー、データベース、ネットワーク関連のサービスなどがあります。デーモンは通常、ユーザーと直接やり取りすることはなく、システムの起動時に開始され、その後も継続して動作し続けます。 **デーモンの主な特徴**: * **バックグラウンドで動作する**:デーモンは、システムが稼働している間、継続的に動作します。 * **自動的に起動する**:多くのデーモンは、システムの起動時に自動的に開始されます。 * **名前の付け方に特徴がある**:一般的に、デーモンの名前は「d」で終わることが多いです。たとえば、`sshd` はSSHサービスを提供するデーモンであり、`httpd` はWebサーバー機能を提供するデーモンです。 #### 2. systemdユニット(Unit)とは? systemdは、現代のLinuxで広く使われているシステムおよびサービスの管理機構です。システムの起動から各種サービスの開始・停止まで、さまざまな処理を管理しています。その管理を効率よく行うために使われるのが、**ユニット(Unit)** という概念です。 ユニットとは、systemdがシステム上のさまざまな要素を管理するための基本単位です。対象はデーモンだけではなく、タイマー、マウントポイント、ソケットなど多岐にわたります。 **ユニットの主な種類**: * **サービスユニット(.service)**:デーモンのようなバックグラウンドサービスを管理します。 * **タイマーユニット(.timer)**:特定の時刻や一定の間隔で処理を実行します。 * **マウントユニット(.mount)**:ファイルシステムのマウントを管理します。 * **ソケットユニット(.socket)**:ネットワークソケットを管理し、必要に応じて関連サービスを起動します。 * **ターゲットユニット(.target)**:複数のユニットをまとめて、システムの特定の状態を表します。 #### 3. デーモンとsystemdユニットの違い * **デーモン**:バックグラウンドで動作するプログラムそのものを指し、システムサービスの一種です。主に、特定の処理を継続的に実行する役割を担います。 * **systemdユニット**:サービス、タイマー、マウントなど、システム上のさまざまな要素を管理するための単位です。デーモンはその中の一例にすぎず、すべてのユニットがデーモンというわけではありません。 つまり、systemdはデーモンを含む多様なユニットを制御できる仕組みであり、デーモンはその管理対象のひとつです。systemdはデーモンだけでなく、タイマーやマウントポイントなど、システム運用に欠かせないさまざまな要素を一元的に管理します。 #### 4. 例で見るデーモンとsystemdユニット * `sshd.service`:SSHデーモンを管理するサービスユニットです。ユーザーがリモートから接続できるように、バックグラウンドでSSHサービスを提供します。 * `cron.service`:`cron` は定期的な処理を実行するためのデーモンであり、これもsystemdによって管理されるサービスユニットです。 * `tmp.mount`:`/tmp` ディレクトリをマウントするためのマウントユニットです。デーモンではありませんが、システムにとって重要な役割を果たします。 #### 5. まとめ デーモンは、バックグラウンドで動作するプログラムであり、システムサービスの一形態です。一方、systemdユニットは、システム上のさまざまな要素を管理するための単位であり、デーモンもその中に含まれますが、それだけを指すわけではありません。systemdは、デーモンに加えて、タイマー、マウント、ソケットなど、さまざまな機能を管理する仕組みです。 Linuxに初めて触れる人にとっては、デーモンとユニットの違いが少しわかりにくいかもしれません。しかし、簡単に言えば次のように整理できます。 * **デーモン**:バックグラウンドで動作するプログラム * **systemdユニット**:システム上のさまざまな要素を管理するための単位 systemdは、デーモンを含むさまざまなシステム要素を管理することで、Linuxシステムを効率よく動作させています。 --- **次回予告**:次の記事では、systemdユニットを操作するコマンド **`systemctl`** について解説します。`systemctl` を使ったユニットの開始・停止の方法や、有効化・無効化の方法などを整理して紹介する予定です。