부팅 시 systemd 서비스를 시작하는 방법

부팅 시 systemd 서비스를 시작하는 방법

XUbuntu 20.04에 Nix 패키지 관리자를 설치했습니다. 서비스를 추가합니다 nix-daemon. nix-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

서비스 파일의 변경 사항이 다시 로드되도록 합니다. 그런 다음 재부팅하여 서비스를 시작해야 합니다.

관련 정보