Być może jest to trywialne pytanie, ale nie jest dla mnie całkowicie jasne. Na jednym z naszych serwerów uruchomiono niektóre procesy w tle, które zostały uruchomione, service
a niektóre inne, które zostały uruchomione systemctl
, takie jak:
$ service nginx start
$ systemctl start gunicorn
Jaka jest różnica między tymi dwoma poleceniami? Który jest preferowanym sposobem radzenia sobie z usługami w tle? Jak skonfigurować preferowane polecenie?
Odpowiedzi:
service
to polecenie „wysokiego poziomu” używane do uruchamiania i zatrzymywania usług w różnych systemach uniksowych i linuksowych. W zależności od menedżera usług „niższego poziomu”service
przekierowuje na różne pliki binarne.Na przykład w CentOS 7 przekierowuje
systemctl
, podczas gdy w CentOS 6 bezpośrednio wywołuje/etc/init.d
skrypt względny . Z drugiej strony w starszych wersjach Ubuntu przekierowuje doupstart
service
jest odpowiedni do podstawowego zarządzania usługami, a bezpośrednie połączeniasystemctl
dają większe możliwości kontroli.źródło
systemctl
jest w zasadzie bardziej zaawansowaną wersjąservice
.Ze
service
można zrobić tylko polecenia związane z usługą (czylistatus
,reload
,restart
), natomiast zesystemctl
można użyć bardziej zaawansowanych poleceń, takich jak:systemctl is-failed name.service # check if service failed to load
Lub usługi maskowania:
systemctl mask name.service
Istnieje wiele dobrych informacji na tej stronie z Zapytaj Ubuntu.
źródło
systemctl
jest głównym narzędziem do kontrolowania demonów / usługsystemd
,podczas gdy
service
polecenie jest tradycyjnym narzędziem naSysVinit
świecie.Jedną z funkcji systemd jest zgodność z komendami SysVinit / legacy,
więc jeśli masz
systemctl
komendę,service foo start
będzie to wszystkosystemctl start foo
.Ta sama historia dla
chkconfig
.źródło