起動時にシステムサービスを開始しないようにsystemdに要求する方法は?

起動時にシステムサービスを開始しないようにsystemdに要求する方法は?

サービスを削除したくなく、起動時に起動しないようにしたいと思います。後で手動で起動するには(コマンドを使用systemctl start <service>)オプションが必要です。

.itを使ってみましたsystemctl disable <service>。サービスが削除されたため動作しませんでした。

別の可能性があります。サービスファイルから

[Install]
#WantedBy=multi-user.target

コメントを付けることができます(その後systemctl daemon-reload)。そのサービスファイルが私が作成したので、私のサービスで動作します。

ただし、展開に属するサービスファイルはにあります/lib/systemd/system。このディレクトリのファイルはオペレーティングシステムによって管理されます。つまり、アップデートで上書きされ、システムの他の部分ではこれらのファイルが変更されていないと想定できます。単にシステムファイルを編集するのは/etc悪い習慣であり、私はそうしたくありません。私は私を編集したくありません/lib

何をすべきか?

ベストアンサー1

systemctl disableこれを行う正しい方法は、実行する必要があるsystemctl --allすべての起動可能なデバイスを一覧表示するために出力に表示されない場合でも、デバイスを手動で起動できます。systemctl list-unit-filesデバイスを起動できないようにするには、maskそのデバイスが必要です。

$ sudo systemctl stop unbound
$ sudo systemctl status unbound
● unbound.service - Unbound DNS server
   Loaded: loaded (/lib/systemd/system/unbound.service; enabled; vendor preset: enabled)
   Active: inactive (dead) since Fri 2019-05-03 13:12:41 CEST; 5s ago
     Docs: man:unbound(8)
 Main PID: 5320 (code=exited, status=0/SUCCESS)

$ sudo systemctl disable unbound
$ sudo systemctl status unbound
● unbound.service - Unbound DNS server
   Loaded: loaded (/lib/systemd/system/unbound.service; disabled; vendor preset: enabled)
   Active: inactive (dead)
     Docs: man:unbound(8)

$ sudo systemctl start unbound
$ sudo systemctl status unbound
● unbound.service - Unbound DNS server
   Loaded: loaded (/lib/systemd/system/unbound.service; disabled; vendor preset: enabled)
   Active: active (running) since Fri 2019-05-03 13:13:14 CEST; 1s ago
     Docs: man:unbound(8)
  Process: 30513 ExecStartPre=/usr/lib/unbound/package-helper chroot_setup (code=exited, status=0/SUCCESS)
  Process: 30518 ExecStartPre=/usr/lib/unbound/package-helper root_trust_anchor_update (code=exited, status=0/SUCCESS)
 Main PID: 30525 (unbound)
    Tasks: 1 (limit: 4915)
   CGroup: /system.slice/unbound.service
           └─30525 /usr/sbin/unbound -d

本当に必要な場合は、で/lib定義されているシステム提供サービスをオーバーライドし、ファイルを追加して目的の宛先/etcを変更できます。systemctl edit yourunitこれにより、必要な設定のみをオーバーライドできるエディタが開きます。結果をオーバーレイ「フラグメント」として正しい場所に保存します。システム提供サービスの上書きされない設定の更新(例えばパッケージのアップグレードを通じて)は透過的に考慮されます。

おすすめ記事