Я совершенно новичок в мире Linux, поэтому извините за что-то не так, я могу сказать.
Я пытаюсь запустить базу данных Mongo на компьютере с Debian 8.5. Когда я установил пакет (предварительно собранный с percona.com), я заметил следующие файлы:
/etc/init.d/mongod (1)
/lib/systemd/system/mongod.service (2)
О /etc/init.d/mongod
Я понимаю, что это вызывается (при условии, что оно зарегистрировано через update-rc.d
) при загрузке / в других конкретных состояниях системы (я не хочу разбираться в технических вопросах по этому вопросу, я поглощаю много информации, и это кажется менее важным).
Это прекрасно для меня. Сценарий выполняет много инициализации и, наконец, запускает демон Монго. Кажется, у него есть «триггеры» для запуска, остановки, перезапуска и т. Д., И, насколько я понимаю, я могу активировать их с помощью sudo service mongod <action>
.
О /lib/systemd/system/mongod.service
Этот файл, кажется, делает то же самое (т.е. запускает монго), но с меньшей конфигурацией, только одна строка в параметре ExecStart:
[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
.
Я не понимаю, вызывается ли это при загрузке или нет.
Я не понимаю, зачем нужны два этих «служебных» файла и как я могу избавиться от одного (возможно, от одного из файлов / lib / systemd, поскольку он намного проще).
Я не понимаю, есть ли связь между ними.
Я прочитал, что
systemctl
работает и соinit.d
скриптами, и в этом случае я не понимаю, какой из двух файлов будет запущенsystemctl mongod start
.
Я думаю, что есть некоторая избыточность, и я должен выбрать только один из двух способов. И я хочу быть уверен, что это
- вызывается при загрузке
- вызывается по команде (как
service
илиsystemctl
).
Не могли бы вы помочь мне очистить мой разум? С помощью некоторых комментариев я, вероятно, смогу сфокусировать и сузить вопрос.
источник
systemctl disable mongod
:; затем переименовывается в mongod.service в mongod-backup.service; тогдаsystemctl daemon-reload
. Как вы думаете, это было правильно? Я читал, что вы не должны изменять файлы в / lib / systemd / system /, но без переименования systemctl продолжал игнорировать скрипт init.d.mongod
. Также есть шанс, что вам придется удалить некоторые строгие зависимости, но я бы не подумал. Безопасный способ изменить уязвимые службы - скопировать их/etc/systemd/system/
и изменить копию.