デーモンとは何か??Linux初心者にもわかりやすく解説

Linux を学習するうえで必ず登場するキーワードが「デーモン(daemon)」です。デーモンとは、ユーザーがログインしていなくてもバックグラウンドで常時動作し、ネットワーク待受やログ収集などを自動的に処理するサービス用プロセスの総称を指します。

語源と由来

「daemon」という単語はギリシャ神話の守護霊に由来しており、人目につかずに働く存在をイメージした名前です。プロセス名の末尾に付く 「d」 は “daemon” の頭文字を意味しています(例:sshdcrond)。

OS における役割

  • ネットワーク接続の待受 (sshd, nginx)
  • システムログの収集 (rsyslogd)
  • 印刷キューの管理 (cupsd)
  • タスクスケジューラ (crond)

これらはシステム起動と同時に立ち上がり、利用者が明示的に操作しなくても安定したサービスを提供します。

目次

デーモンの具体例

ネットワーク系デーモン

デーモン名主な機能待受ポート
sshdSSH 接続の受付22/TCP
httpdWeb サーバー(Apache)80, 443/TCP
namedDNS サーバー(BIND)53/UDP, 53/TCP

システム管理系デーモン

デーモン名主な機能
rsyslogd各種ログの一元管理
crond定期タスクの実行
systemd-journaldsystemd ログの収集

デーモンの起動と管理(systemd)

現行ディストリビューションの多くは systemd を採用しており、systemctl コマンドによってデーモンの状態を一元管理できます。

systemctl 基本コマンド

# 状態確認
sudo systemctl status sshd

# 起動・停止
sudo systemctl start sshd
sudo systemctl stop  sshd

# 再読み込み(設定変更後)
sudo systemctl reload sshd

自動起動設定

# 次回ブート時から自動起動
sudo systemctl enable sshd

# 自動起動を解除
sudo systemctl disable sshd

enabledisable はサービスのシンボリックリンクを作成・削除する形で有効化・無効化を行います。

デーモンの内部構造

フォークとセッション分離

デーモンは以下の手順で端末から切り離されます。

  1. fork() で子プロセス生成
  2. 親プロセス終了(子のみ存続)
  3. setsid() で新しいセッションを開始
  4. 作業ディレクトリを / に変更
  5. 標準入出力を /dev/null にリダイレクト

ファイルディスクリプタ整理

不要なファイルディスクリプタを閉じ、ログは専用ファイルや syslog に出力することで安定性とセキュリティを確保します。

よくある質問とトラブルシューティング

サービスとデーモンの違い

Linux ではほぼ同義語として扱われます。Windows 用語の「サービス」に相当するのが Linux における「デーモン」です。

デーモンがすぐ停止する場合の確認ポイント

  1. sudo journalctl -u <サービス名> -xe でエラーログを確認します。
  2. 設定ファイル(例:/etc/ssh/sshd_config)の文法エラーを sshd -t のように事前検証します。
  3. ポート競合や権限不足がないかを netstatss で調査します。

まとめ

デーモンは Linux の安定動作を支える裏方プロセスであり、systemd の導入によって管理が直感的になりました。systemctl で起動状態を把握し、不要なデーモンを無効化することでセキュリティ向上や軽量化も図れます。仕組みを理解しておくと、新しい常駐プログラムを安全に導入する際やトラブルシュートの際に大きな助けとなります。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次