Jestem zupełnie nowy w świecie Linuksa, więc przepraszam za cokolwiek złego, co mogę powiedzieć.
Próbuję uruchomić bazę danych Mongo na maszynie Debian 8.5. Kiedy zainstalowałem pakiet (wcześniej zbudowany z percona.com), zauważyłem następujące pliki:
/etc/init.d/mongod (1)
/lib/systemd/system/mongod.service (2)
Informacje o /etc/init.d/mongod
Rozumiem, że jest to wywoływane (o ile jest zarejestrowane przez update-rc.d
) podczas rozruchu / w innych szczególnych stanach systemu (nie chcę zajmować się tym technicznie, pochłaniam wiele informacji i wydaje się to mniej ważne).
To jest dla mnie idealnie. Skrypt wykonuje wiele inicjalizacji i wreszcie uruchamia demona mongo. Wydaje się, że ma „wyzwalacze” do uruchamiania, zatrzymywania, restartowania itp. I, o ile rozumiem, mogę je uruchomić sudo service mongod <action>
.
Informacje o /lib/systemd/system/mongod.service
Ten plik wydaje się robić to samo (tj. Uruchamiać mongo), ale przy mniejszej konfiguracji, tylko jeden wiersz w parametrze 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
O ile rozumiem, można to uruchomić sudo systemctl start mongod
.
Nie rozumiem, czy jest to wywoływane przy rozruchu, czy nie.
Nie rozumiem, dlaczego potrzeba dwóch z tych plików „serwisowych” i jak mogę się ich pozbyć (być może ten w / lib / systemd, ponieważ jest o wiele prostszy).
Nie rozumiem, czy istnieje jakikolwiek związek między nimi.
Przeczytałem, że
systemctl
działa również nainit.d
skrypty i w tym przypadku nie rozumiem, który z tych dwóch plików zostanie uruchomionysystemctl mongod start
.
Myślę , że jest trochę redundancji i powinienem wybrać tylko jeden z dwóch sposobów. I chcę mieć pewność, że tak jest
- wywoływany podczas rozruchu
- wywoływalne za pomocą polecenia (jak
service
lubsystemctl
).
Czy możesz mi pomóc oczyścić umysł? Przy pomocy niektórych komentarzy prawdopodobnie mogę skupić się i zawęzić pytanie.
źródło
systemctl disable mongod
:; następnie przemianowano mongod.service na mongod-backup.service; potemsystemctl daemon-reload
. Myślisz, że to było poprawne? Przeczytałem, że nie powinieneś modyfikować plików w / lib / systemd / system /, ale bez zmiany nazwy systemctl ciągle ignorował skrypt init.d.mongod
. Istnieje również szansa, że będziesz musiał usunąć pewne ścisłe zależności, ale nie sądziłbym, że tak. Bezpiecznym sposobem zmodyfikowania usług, których dotyczy problem, jest skopiowanie ich/etc/systemd/system/
i zmodyfikowanie kopii.