ホームページ  >  記事  >  運用・保守  >  Linux でのシステム サービスの概要 - init、systemd

Linux でのシステム サービスの概要 - init、systemd

齐天大圣
齐天大圣オリジナル
2020-11-10 09:54:362417ブラウズ

サービスとデーモンという言葉をよく聞きますが、これはどういう意味ですか?それらの間に違いやつながりはありますか? Linux のサービスはメモリ内に常駐し、一部のシステム機能またはネットワーク機能を提供できるプログラムです。デーモンの直訳は、デーモンプロセスまたはバックグラウンドプロセスです。したがって、サービスとデーモンを区別せずに同じものとして考えることができます。

初期の init 管理メカニズム

centOS6 では、init サービス管理メカニズムがまだ使用されていました。 centOS7でも使えるものもあるので簡単に紹介します。主に次の機能を確認します:

サービスの起動、シャットダウン、状態確認など。

  • サービスを開始します: /etc/ init.d/ nginx start

  • サービスを再起動します: /etc/init.d/nginx restart

  • サービスを閉じます: /etc/ init.d/nginx stop

  • ステータスビュー: /etc/init.d/nginx status

サービス起動方法

  • 独立起動: 一般的な mysqld、php-fpm、nginx、httpd およびその他のサービスなど、ほとんどのサービスがこのモードを採用しています。

  • スーパー デーモンによってホストおよび開始される: これらのサービスの起動は、別のサービスによってホストされます。これらのサービスをホストするサービスがスーパー デーモンになります。一般的なスーパー デーモンには、inetd および xinetd が含まれます

実行レベル

Linux には、0、1、2、3、4、5、6 の 7 つの実行レベルがあります。一般的に使用されるものは次のとおりです。

  • 1 シングルプレイヤー メンテナンス モード

  • 3 プレーン テキスト モード

  • 5 グラフィック モード

各実行レベルの起動スクリプトは、/etc/rc[0-6].d/SNNdaemon を介して /etc/init.d/daemon にリンクされます。

ll /etc/rc3.d/S55nginx 
lrwxrwxrwx 1 root root 15 Sep 21 11:30 /etc/rc3.d/S55nginx -> ../init.d/nginx

S は起動、NN は数字を意味します。これらの数字はスクリプトの実行順序を示します。数字が小さいほど最初に実行されます。この実行順序により、サービスの依存関係を適切に管理できます。

#ブート時にサービスを自動開始する

  • ブート時に自動開始する: デーモンの chkconfig

  • 閉じて自動開始を有効にする 開始: chkconfig off deamon

  • サービスが開始されているかどうかを確認します: chkconfig --list daemon

#systemd 管理メカニズム##centos7 以降、以前の init 管理メカニズムは廃止され、代わりに systemd が使用されます。 systemd 管理の違いを見てみましょう。

すべてのサービスを並行して処理して、起動プロセスを高速化します。

サービスを 1 つずつ開始する init とは異なり、systemd は多くのサービスを同時に開始できます。したがって、これにより起動の待ち時間が大幅に短縮されます。

サービスの依存関係を解決する

たとえば、サービス B を開始するには、まずサービス A を開始する必要があります。このとき、systemd を使用してサービス B を開始すると、サービス B が開始されます。自動的に依存関係をチェックし、サービス B を開始する前にサービス A を開始します。

ユニットの種類

init に 2 つの起動メソッドしかないスタンドアロンやスーパーデーモンと比較して、systemd では統一されたサービスユニット (ユニット) とユニット分割が定義されています。サービス、ソケット、ターゲット、パス、スナップショット、タイマー、その他のタイプに分類されます。

下位互換性のある init サービス スクリプト

/etc/inid.d/ にある古いサービス起動スクリプトも systemd を通じて管理できます。注: /etc/init.d ディレクトリ内のサービス起動スクリプトを手動で開始すると、systemd はサービスの実行ステータスを検出できなくなります。

# systemctl status mysqld
● mysqld.service - LSB: start and stop MySQL
   Loaded: loaded (/etc/rc.d/init.d/mysqld; bad; vendor preset: disabled)
   Active: active (running) since Wed 2020-10-28 13:26:53 CST; 1 weeks 5 days ago
……
# /etc/init.d/mysqld restart
Shutting down MySQL....                                    [  OK  ]
Starting MySQL.                                            [  OK  ]
[root@lijia ~]# systemctl status mysqld
● mysqld.service - LSB: start and stop MySQL
   Loaded: loaded (/etc/rc.d/init.d/mysqld; bad; vendor preset: disabled)
   Active: active (exited) since Wed 2020-10-28 13:26:53 CST; 1 weeks 5 days ago
……

init と systemd に関しては、systemd を習得することに重点を置く必要があり、init についても理解する必要があります。

以上がLinux でのシステム サービスの概要 - init、systemdの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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