PC の起動から常に実行状態でシステムに待機 (常駐) し、自動で定期的に処理を実行したり、サーバーとしてクライアントの要求に対してサービスを提供するためのプログラムの事です。
システムに必要のない余計なデーモンが起動していると
といったことがあるのでシステムに必要がないデーモンの起動は止めておきましょう。
デーモンの起動スクリプトは通常/etc/rc.dにありますが、特に理由がなければディストリビューション付属のツールを使って設定しましょう。
デーモンの起動設定は次のツールで行うことができます。
OS の起動・終了時に実行する処理を段階ごとに分類する仕組み。
SysV系UNIX互換のディストリビューション (Red Hat/Slackware系) での標準的なランレベルの設定は以下のとおり:
ランレベル | 説明 |
0 | 停止 |
1 | シングルユーザモード |
2 | マルチユーザモード(ネットワークなし) |
3 | マルチユーザモード(ネットワークあり) |
4 | 未使用 |
5 | マルチユーザモード(GUIログイン) |
6 | 再起動 |
Red Hat系では /usr/sbin/chkconfig --list と実行すれば設定が表示される。(*1)
ランレベルの配置は /etc/rc.d で決まっていて、起動・終了時に init が /etc/inittab の設定をみて実行します。
なので、普段使うランレベルを変更したい時は /etc/inittab を編集しましょう。
ディストリビューションによって /etc 直下にあったり /etc/rc.d にあったりという違いはあるものの、大まかに言えば
たとえば Apache を起動させたければ
/etc/rc.d/init.d/apache start
とか。stop と restart で停止/再起動。
夜中に勝手にハードディスクがガリガリガリガリ。うぉ、まさかクラッカーに乗っ取られたのか!?
大抵の場合、夜中に cron デーモン (特定の処理を定期的に実行するデーモン) によって locate コマンドのためのデータベースを更新する作業 (updatedb) が行われています。
停止するには root の crontab を編集して cron の設定を変更します。ただし、その時点から locate コマンドが新しいファイルを探せなくなってしまうので、locate を使う場合は手動で updatedb を実行しましょう。
/var/spool/cron/crontabs に ユーザ名.new というファイルが残っていませんか? 削除してから編集し直してみましょう。
inetdはスーパーサーバと呼ばれるソフトウェア。
デーモンは通常、それぞれ起動してポートへの接続を待機するが、あまり使われないデーモンだと、ポートの数だけ待機するのに無駄がある。
そのため、デーモンとして常にひとつだけ起動しておいて、ポートへの接続が来た段階で担当のデーモンを起動するスーパーサーバと呼ばれるデーモンが作られた。
ただし、httpdのようにたくさんのリクエストが来るデーモンの場合、inetdで管理するのは必ずしも適切ではない。あくまで、あまり使われないが常駐する必要のある雑多なデーモンのための仕組み。
この設定変更は、Mandriva コントロールセンターより行えます。具体的には、デスクトップのパネルメニューより [アプリケーション] > [システム] . [コンピューターを設定] > [システムサービス] より、任意のサービスを選択して変更ができます。
Mandriva Linux 10.1 Memo というサイトでは、サーバーの運用に関連した実用的な情報が公開されているので大変参考になるでしょう。
最近、マルチコアのCPUが普通になったため、並列処理のできないsysv initは時代遅れになった。
代わりに最近使われるのがsystemd。
systemdではシェルスクリプトではなくUnitと呼ばれる設定ファイルを記述し、並列処理ができるところではできる限り並列処理を行う。
なんだか、単なる並列のinitシステムではなく、新しいLinuxの管理ツールのデファクトスタンダードになりつつある。
それもそのはず、Linuxの開発者たちは「無意味なLinuxディストリビューション間の差異をなくす」ために、systemdを位置付けて開発している。
だが、複雑怪奇なsystemdは賛否両論を生んでおり、systemdを排除したDevuanのようなディストリビューションも開発されている。
たとえば、
systemctl start httpd.service
とすれば、httpdのサービスが起動する。
startのほか、restart(再起動), stop(停止), reload(設定の再読み込み), status(情報表示), show(情報表示2)などがある。また、enable, disableで自動起動を有効化・無効化できるほか、is-enabledで有効・無効の確認ができる。
システム標準のUnitファイルは/usr/lib/systemd/system/にあり、管理者による設定は/etc/systemd/system/にUnitファイルを置いて行う。
Unitファイルは、前後関係と依存関係によって成り立つ。前後関係があるUnitについてはその順序を守り、前後関係のないUnitについてはすべて並列で起動する。
また、udevのデフォルトの設定(ルール)は/usr/lib/udev/rules.dに、管理者によるルールは/etc/udev/rules.dにある。
*1 Debian や Gentoo などではランレベルの配置が若干異なります。