私は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にあるファイル)をどのようにして削除できるのかわかりません。
両者の間に何か関係があるのかわかりません。
systemctl
はinit.d
スクリプトでも機能することを読みました。この場合、2つのファイルのどちらがsystemctl mongod start
によってトリガーされるのかわかりません。
私は考えます冗長性があるので、2つの方法のうち1つだけを選択する必要があります。そして、私はそれが
service
またはsystemctl
など)。私の心をきれいにするのを手伝ってくれませんか?いくつかのコメントの助けを借りて、おそらく焦点を絞って質問を絞り込むことができます。
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が同時に起動します。