Jeśli usługa jest enabled
, to gdzieś jest dowiązanie symboliczne
/etc/systemd/system
do pliku jednostkowego, najczęściej gdzieś w
/lib/systemd/system
Pomocnie, gdy jesteś enable
usługą, pełne ścieżki utworzonego łącza i celu zostaną wydrukowane na standardowe wyjście.
Wyłączenie usługi usuwa dowiązanie symboliczne, więc nie wpływa to na sam plik jednostki, ale usługa nie jest ładowana przy następnym uruchomieniu, gdy systemd czyta /etc/systemd/system
.
Można jednak załadować usługę wyłączoną i zostanie ona uruchomiona, jeśli uruchomiona zostanie usługa zależna od niej ; enable
i disable
konfiguruj tylko automatyczne uruchamianie dla jednostek, a stan można łatwo zastąpić.
Zamaskowany usługa jest jeden plik, którego jednostka jest dowiązaniem do /dev/null
. To sprawia, że „niemożliwe” jest załadowanie usługi, nawet jeśli jest to wymagane przez inną, włączoną usługę.
Kiedy jesteś mask
usługą, tworzony jest dowiązanie symboliczne od /etc/systemd/system
do /dev/null
, pozostawiając oryginalny plik jednostki gdzie indziej niezmieniony. W unmask
przypadku usługi dowiązanie symboliczne jest usuwane.
Zauważyłem jednak, że te polecenia nie zawsze są honorowane.
Gdy próbuję zamaskować większość usług, nie udaje się:
$ sudo systemctl mask bluetooth.service
Failed to execute operation: Invalid argument
Oczywiście najpierw zatrzymałem usługę. @Anwar sugeruje, że maskowanie jest możliwe tylko w przypadku usług niekrytycznych.
Demaskowanie zamaskowanej usługi, chyba że ją zamaskowałem, również kończy się niepowodzeniem (po cichu). Wierzę, że dzieje się tak, ponieważ nigdzie nie ma pliku jednostkowego dla usługi, z wyjątkiem postaci dowiązania symbolicznego /dev/null
, tym razem w /lib/systemd/system
:
$ file $(locate fuse.service)
/lib/systemd/system/fuse.service: symbolic link to /dev/null
$ sudo systemctl unmask fuse.service
$ systemctl status fuse
● fuse.service
Loaded: masked (/dev/null; bad)
Active: inactive (dead)
Nie tylko ja mam ten problem
Aby faktycznie zdemaskować zamaskowaną usługę x11-common, musiałem usunąć dowiązanie symboliczne do /dev/null
i sudo apt-get install --reinstall x11-common && sudo systemctl daemon-reload
. Teraz, gdy pytam o to systemctl status x11-common
, widzę, że usługa ma ładne zielone kółko i jest ładowana i aktywna (opuszczona), chociaż nie ma pliku jednostkowego.
Więcej informacji można znaleźć w tym artykule na temat korzystania z Systemctl .