起動時にプリマスサービスを無効にすることで、Ubuntu GNOME 16.04の起動時間を改善したいと考えています。さまざまなWebサイトでそれを行う方法に関する2つの答えを見つけました。
# systemctl disable plymouth-quit-wait.service
# systemctl mask plymouth-quit-wait.service
私はそれらが何をするかを知らない限り、上記のいずれも実行できません。
サービスがenabled
の場合、どこかにシンボリックリンクがあります
/etc/systemd/system
ほとんどの場合、どこかにあるユニットファイルに
/lib/systemd/system
役立つことに、サービスをenable
すると、作成されたリンクとターゲットのフルパスがstdoutに出力されます。
無効化サービスはシンボリックリンクを削除するため、ユニットファイル自体は影響を受けませんが、systemdが/etc/systemd/system
を読み取るとき、サービスは次回の起動時にロードされません。
ただし、無効なサービスcanがロードされ、開始されます それに依存するサービスが開始された場合 ; enable
およびdisable
は、ユニットの自動起動動作のみを構成し、状態は簡単にオーバーライドされます。
maskedサービスは、そのユニットファイルが/dev/null
へのシンボリックリンクであるサービスです。これにより、別の有効なサービスで必要な場合でも、サービスをロードすることが「不可能」になります。
サービスをmask
すると、/etc/systemd/system
から/dev/null
へのシンボリックリンクが作成され、元のユニットファイルはそのまま残ります。サービスをunmask
すると、シンボリックリンクが削除されます。
ただし、これらのコマンドが常に尊重されるわけではないことに気付きました。
ほとんどのサービスをマスクしようとすると失敗します。
$ Sudo systemctl mask bluetooth.service
Failed to execute operation: Invalid argument
もちろん、最初にサービスを停止しました。 @Anwarは、マスキングは重要でないサービスでのみ可能であることを示唆しています。
自分でマスクしない限り、マスクされたサービスのマスク解除も失敗します(サイレント)。 Ibelieveこれは、/dev/null
へのシンボリックリンクの形式を除いて、今回は/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)
マスクされたサービスx11-commonを実際にマスク解除するには、/dev/null
およびSudo apt-get install --reinstall x11-common && Sudo systemctl daemon-reload
へのシンボリックリンクを削除する必要がありました。 systemctl status x11-common
でクエリすると、サービスには緑色の円が表示され、ユニットファイルはありませんが、ロードされてアクティブ(終了)になります。
詳細については、この記事 Systemctlの使用方法 が役に立つかもしれません。
とても簡単です。
systemctl start
、systemctl stop
:問題のユニットを開始(停止)しますimmediately;systemctl enable
、systemctl disable
:ブート時のautostartのユニットをマーク(マーク解除)(ユニット固有の方法で、説明[Install]
セクションで);systemctl mask
、systemctl unmask
:問題のユニットを開始するすべての試みを許可しません(許可します)(手動で、またはデフォルトのブートターゲットの依存関係を含む他のユニットの依存関係として)。 systemdでの自動起動のマーキングは、デフォルトの起動ターゲットから問題のユニットに人為的な依存関係を追加することで実装されるため、「マスク」は自動起動も許可しないことに注意してください。参照: systemctl(1) .
その他:Lennart Poettering(2011-03-02)。 「オフの3つのレベル」 。 管理者向けのsystemd。 0pointer.de。
要するに、
disable
は、起動中にユニットを無効にします。ただし、そのユニットは起動後いつでも開始できます。
mask
はユニットを完全に無効にします。マスクを解除せずに起動することはできません。これは、ブート中に失敗することを自動的に意味します。