web-dev-qa-db-ja.com

「/etc/init.d」および「/ lib / systemd / system」のサービスについて混乱

私はLinuxの世界にはまったく新しいので、何か間違ったことを言って申し訳ありません。

Mongo DBをDebian 8.5マシンで実行しようとしています。 (percona.comから事前にビルドされた)パッケージをインストールしたとき、次のファイルに気付きました。

/etc/init.d/mongod (1)
/lib/systemd/system/mongod.service (2)

/ etc/init.d/mongodについて

起動時/他の特定のシステム状態で(update-rc.dを介して登録されている限り)呼び出されることを理解しています(これについて技術的に知りたくないので、多くの情報を吸収していますが、これは少ないようです重要)。

これは私にはまったく問題ありません。スクリプトは多くの初期化を行い、最終的にmongoデーモンを起動します。起動、停止、再起動などの「トリガー」があるようで、Sudo service mongod <action>でトリガーできると私が理解している限りでは。

/ lib/systemd/system/mongod.serviceについて

このファイルは同じことをするようです(つまり、mongoを実行します)が、構成が少なく、ExecStartパラメーターの1行だけです。

[Unit]
Description=MongoDB (High-performance, schema-free document-oriented database)
After=time-sync.target network.target
[Service]
Type=forking
User=mongod
Group=mongod
PermissionsStartOnly=true
EnvironmentFile=/etc/default/mongod
ExecStart=/usr/bin/env bash -c "/usr/bin/mongod $OPTIONS > ${STDOUT} 2> ${STDERR}"
PIDFile=/var/run/mongod.pid
[Install]
WantedBy=multi-user.target

私が理解している限り、これはSudo systemctl start mongodでトリガーできます。

  • これが起動時に呼び出されるかどうかはわかりません。

  • なぜこれらの「サービス」ファイルが2つ必要なのか、また1つ(/ lib/systemdにあるファイルの方が簡単なので、おそらく/ lib/systemdにあるファイル)をどのようにして削除できるのかわかりません。

  • 両者の間に何か関係があるのか​​わかりません。

  • systemctlinit.dスクリプトでも機能することを読みました。この場合、2つのファイルのどちらがsystemctl mongod startによってトリガーされるのかわかりません。

私は考えます冗長性があるので、2つの方法のうち1つだけを選択する必要があります。そして、私はそれが

  • 起動時に呼び出されます
  • コマンドで呼び出し可能(serviceまたはsystemctlなど)。

私の心をきれいにするのを手伝ってくれませんか?いくつかのコメントの助けを借りて、おそらく焦点を絞って質問を絞り込むことができます。

15
natario

init.dスクリプトと同じ名前のsystemd .serviceファイルの両方がある場合、systemdはすべての操作でサービスファイルを使用します。 serviceコマンドはsystemdにリダイレクトされるだけだと思います。 init.dスクリプトは無視されます。

systemdを使用します。これはDebian 8の新機能ですが、デフォルトです。 Systemdサービスファイルは想定 init.dスクリプトよりも単純に見えます。 systemdサービスでサポートされていない、必要な特定の機能については言及していません。

サービスファイルが含まれていない場合、systemdはinit.dスクリプトを喜んで使用します。したがって、mongodパッケージの開発者は、このsystemd定義の方が優れていると考えていることを伝えています。

systemctl status mongodの出力を見てください。起動時にサービスを開始できるようになっている場合、Loaded:行は「有効」と表示されます。それ以外の場合は、systemctl enable mongodを使用できます。オプション--nowを含めることもできます。これにより、mongodが同時に起動します。

12
sourcejedi