/etc/init.d および /lib/systemd/system サービスの混乱

/etc/init.d および /lib/systemd/system サービスの混乱

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.dsystemdはすべての操作にサービスファイルを使用します。.service私はserviceコマンドがsystemdにのみリダイレクトされると思います。 init.d スクリプトは無視されます。

使用systemd。 Debian 8 の新機能ですが、デフォルト設定です。システムサービスファイルは次のとおりです。しなければならないinit.dスクリプトよりも単純に見えます。 systemdサービスが必要な特定の機能をサポートしていないと言及していません。

サービスファイルが含まれていない場合は、systemdinit.dスクリプトが使用されます。だからmongodパッケージ開発者は、このsystemd定義がより良いと思うと言います:)。

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

おすすめ記事