起動時にsystemdサービスを開始する方法

起動時にsystemdサービスを開始する方法

XUbuntu 20.04にNixパッケージマネージャをインストールしました。サービスを追加しますnix-daemonnix-daemon起動時にサービスを開始したいと思います。次のコマンドを入力すると、コンピュータが停止するまでサービスが実行され、正常に動作しますが、再起動した後はサービスが実行されずにコマンドを再実行する必要があります。

systemdがサービスを無効にしたか、有効になったことを忘れてしまったようです。このサービスを有効にして有効にするようにsystemdに指示するにはどうすればよいですか?

$ sudo systemctl status nix-daemon
Unit nix-daemon.service could not be found.
$ sudo systemctl enable nix-daemon
$ sudo systemctl status nix-daemon
● nix-daemon.service - Nix Daemon
     Loaded: loaded (/nix/store/4vz8sh9ngx34ivi0bw5hlycxdhvy5hvz-nix-2.3.7/lib/systemd/system/nix-daemon.service; enabled; vendor preset: enabled)
    Drop-In: /etc/systemd/system/nix-daemon.service.d
             └─override.conf
     Active: inactive (dead)
TriggeredBy: ● nix-daemon.socket
$ sudo service nix-daemon start
● nix-daemon.service - Nix Daemon
     Loaded: loaded (/nix/store/4vz8sh9ngx34ivi0bw5hlycxdhvy5hvz-nix-2.3.7/lib/systemd/system/nix-daemon.service; enabled; vendor preset: enabled)
    Drop-In: /etc/systemd/system/nix-daemon.service.d
             └─override.conf
     Active: active (running) since Fri 2021-04-16 04:35:15 BST; 2s ago
TriggeredBy: ● nix-daemon.socket
   Main PID: 55329 (nix-daemon)
      Tasks: 5 (limit: 9091)
     Memory: 13.8M
     CGroup: /system.slice/nix-daemon.service
             └─55329 nix-daemon --daemon

Apr 16 04:35:15 wayfire systemd[1]: Started Nix Daemon.
Apr 16 04:35:15 wayfire nix-daemon[55329]: warning: unknown setting 'experimental-features'
Apr 16 04:35:15 wayfire nix-daemon[55329]: warning: unknown setting 'keep-derivarions'

編集する:

インストーラが生成するもの/etc/systemd/system/nix-daemon.service(修正していません):

[Unit]
Description=Nix Daemon
RequiresMountsFor=/nix/store
RequiresMountsFor=/nix/var
ConditionPathIsReadWrite=/nix/var/nix/daemon-socket

[Service]
ExecStart=@/nix/store/4vz8sh9ngx34ivi0bw5hlycxdhvy5hvz-nix-2.3.7/bin/nix-daemon nix-daemon --daemon
KillMode=process

[Install]
WantedBy=multi-user.target

/etc/default/nix ファイルがありません。

$ systemctl get-default
graphical.target

答え1

を実行しているにもかかわらず、起動時にサービスがロードされない理由はいくつかありますsystemctl enable thename.service。私の場合、/etc/systemd/system/nix-daemon.serviceインストーラによって作成され(おそらく?)/nix/var/nix/profiles/default/lib/systemd/system/nix-daemon.service私の/nixパーティションは別のパーティションでしたが、systemdは.serviceファイルをマウントする前にファイルを読み取ろうとしました(サービスが認識されませんでした)。journalctl | grep nix-daemon問題を解決できるようにしてください。

答え2

方法をお知らせします。最初:

systemctl get-default

あなたは得ることができますgraphical.target。次に、サービスファイルに次の行を追加します。

[Install]
WantedBy=graphical.target

サービスを開始する対象をsystemdに教えてください。デフォルトのターゲットが異なる場合は、代わりに使用してくださいgraphical.target(例multi-user.target:...)。その後、systemdを再ロードします。

sudo systemctl daemon-reload

サービスファイルの変更が再ロードされるようにします。その後、再起動してサービスを開始する必要があります。

関連情報