Debian 8.5システムでMongoDBを実行しようとしています。パッケージ(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のファイルがはるかに簡単なので)を削除する方法を理解していません。
2つの間にどのような関係があるのか理解できません。
systemctl
スクリプトでも動作することを読みましたがinit.d
、この場合、2つのファイルのいずれかがsystemctl mongod start
。
私考えるいくつかの重複があるため、2つの方法のうち1つだけを選択する必要があります。私はそれが正しいことを確認したいと思います。
- 起動時に呼び出される
- コマンド(
service
またはsystemctl
)で呼び出すことができます。
私の心を空にするのに役立ちますか?
答え1
同じ名前のスクリプトとシステムファイルの両方がある場合、init.d
systemdはすべての操作にサービスファイルを使用します。.service
私はservice
コマンドがsystemdにのみリダイレクトされると思います。 init.d スクリプトは無視されます。
使用systemd
。 Debian 8 の新機能ですが、デフォルト設定です。システムサービスファイルは次のとおりです。しなければならないinit.dスクリプトよりも単純に見えます。 systemdサービスが必要な特定の機能をサポートしていないと言及していません。
サービスファイルが含まれていない場合は、systemd
init.dスクリプトが使用されます。だからmongodパッケージ開発者は、このsystemd定義がより良いと思うと言います:)。
出力を見てくださいsystemctl status mongod
。起動時にサービスが起動するように有効になっている場合、その行Loaded:
は「Enabled」と表示されます。それ以外の場合は、systemctl enable mongod
このオプションを含めることもでき、--now
同時にmongodが起動します。