コマンドSudo systemctl list-unit-files
(Sudoはオプションだと思います)を実行すると、すべてのサービスとその状態を示す出力が表示されます。
これが私のマシンからの抜粋です:
UNIT FILE STATE
...
debian-fixup.service static
debug-Shell.service disabled
display-manager.service enabled
dns-clean.service enabled
dsmcad.service enabled
emergency.service static
failsafe-x.service static
friendly-recovery.service masked
Fuse.service masked
gdm.service masked
getty-static.service static
[email protected] enabled
gpsd.service indirect
[email protected] static
gpu-manager.service enabled
halt-local.service static
halt.service masked
hostname.service masked
...
一部のサービスが「マスク」状態になっているのはなぜですか。これは、「サービスを手動でもsystemdでも開始できないため、「無効にする」よりも優れている」ことを意味すると思います。
サービスユニットの状態に関する詳細情報を取得するにはどうすればよいですか?
ユニットをそれぞれの状態にしたのは誰ですか?
たとえば、Sudo systemctl help dsmcad
を試しました。これは、ユニットファイルからdocumentation = ...
行のみを表示します。 /etc/systemd/system/dsmcad.service
注:ここでは、正確に dsmcadサービスとは何か、そしてそれが何をするかを知っています。自分でインストールしました。一般的なソリューションにもっと興味があります。
mask
は、disable
の強力なバージョンです。 disable
を使用すると、指定したユニットファイルのすべてのシンボリックリンクが削除されます。 mask
を使用している場合、ユニットは/dev/null
にリンクされます。これは、たとえば、チェックすると表示されます。 systemctl status halt.service
によって。 mask
の利点は、手動でも、あらゆる種類のアクティベーションを防ぐことです。
注意:systemctl list-unit-files
はユニットの状態をリストしていますfiles(静的、有効、無効、マスク、間接)。サービスの状態とは関係ありません。 servicesを見るには、systemctl list-units
を使用します。
systemd
は、起動時に非常に早い段階で(/ etc/hostnameから)ホスト名を設定するため、hostname.service
は冗長としてマスクされます。
この設定はDebian systemdパッケージによって提供されます。
$ ls -l /lib/systemd/system/hostname.service
lrwxrwxrwx 1 root root 9 Apr 8 22:47 /lib/systemd/system/hostname.service -> /dev/null
$ dpkg-query --search /lib/systemd/system/hostname.service
systemd: /lib/systemd/system/hostname.service
同様に、Debianはシェルスクリプトなしでシステムをhalt
実行できるようになりました。代わりに systemd-shutdown (ソースコード here )で処理されます。
サービスが手動でマスクされている場合、マスクは代わりに/etc/systemd/system
にインストールされます。
Debian/Ubuntuで削除されたサービスもマスクされます 。理由はわかりません。
マスク状態に関する情報を要求しているため、開始後に定義を変更し、リロード(systemctl daemon-reload)および新しい状態はOKではない)サービスで観察できることに注意することが重要です。それを理解する簡単な例は、次のシナリオです。
a) the service is running well (already started)
b) edit the service definition file and delete everything in its contents
c) reload
d) state masked will be observed too
したがって、マスクされた状態は、不適切なサービス定義から発生する可能性があります。したがって、ユーザーは、サービスを不適切に編集することにより、マスクされていない状態を引き起こす可能性があります。
観察:意図的に発生するのか、単純なバグ(デフォルトのオプション)なのかわかりませんが、共有する興味深い情報があるかもしれません