고쳐 쓰다

고쳐 쓰다

네트워크 구성을 저장하는 일부 마운트를 설정해야 하는 새 서비스(Debian Jessie 아래)를 설정하려고 합니다. 따라서 서비스는 다음과 같습니다.충분히Networking.service가 시작되기 전.

나는 다음을 시도했다:

[Unit]
Description=mount/repair remaining filesystems (all persistent fs beyond "/")
#Before=network-pre.target
Before=networking.service

[Service]
Type=oneshot
ExecStart=/opt/intermodul-mounts/start.sh
TimeoutSec=0
RemainAfterExit=yes

[Install]
RequiredBy=networking.service

다음을 사용하면 systemd-analyze plot서비스가 시작되지만 networking.service약 3초 일찍 시작되는 것을 볼 수 있습니다.

여기에 이미지 설명을 입력하세요.

분명히 내 구성이 잘못되었지만 문제를 찾는 데 어려움을 겪고 있습니다. 어떤 도움이라도 대단히 감사하겠습니다..

고쳐 쓰다

local-fs.target현재 다음 대신 이전에 시작되도록 서비스 구성을 변경하여 networking.service이 문제를 해결합니다 .

[Unit]
DefaultDependencies=no
Description=mount/repair remaining filesystems (all persistent fs beyond "/")
Before=local-fs.target

[Service]
Type=oneshot
ExecStart=/opt/intermodul-mounts/start.sh
TimeoutSec=0
RemainAfterExit=yes

[Install]
RequiredBy=local-fs.target

그런데 왜 첫 번째 구성이 예상대로 작동하지 않는지 알고 싶습니다...?

답변1

network-pre.target은 네트워크 인터페이스가 구성되기 전에 서비스를 주문하는 데 사용할 수 있는 대상입니다.주요 목적은 네트워크 인터페이스가 시작되기 전에 방화벽을 설정하려는 방화벽 서비스와 함께 사용하는 것입니다.이는 수동적 장치입니다. 직접 시작할 수 없으며 네트워크 관리 서비스가 아닌 이전에 실행하려는 서비스를 통해 가져옵니다.

network-pre.target네트워크가 시작되기 전에 일부 설정을 수행하려면 다음을 사용해야 합니다.

네트워크가 구성되기 전에 실행하려는 서비스는 Before=network-pre.target을 입력하고 Wants=network-pre.target을 설정하여 가져와야 합니다.

[Unit]이를 다음 섹션에 넣어야 합니다 .

Before=network-pre.target
Wants=network-pre.target

인용하다

답변2

Debian Jessie에서와 마찬가지로 netfilter-percious 패키지(네트워크 시작 전에 iptables 규칙을 로드할 수 있도록 허용)에는 다음이 있습니다.넷필터-지속적.서비스다음과 같이 보입니다:

# https://www.freedesktop.org/wiki/Software/systemd/NetworkTarget/
# based on the netfilter-persistent package
[Unit]
Description=netfilter persistent configuration
DefaultDependencies=no

Before=network-pre.target
Wants=network-pre.target

Wants=systemd-modules-load.service local-fs.target
After=systemd-modules-load.service local-fs.target

Conflicts=shutdown.target
Before=shutdown.target

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/sbin/netfilter-persistent start
ExecStop=/usr/sbin/netfilter-persistent stop

[Install]
WantedBy=multi-user.target

답변3

실수는 간단하며 제가 자주 혼동하는 주요 사항 중 하나는 Beforea와 를 혼합하는 것 RequiredBy입니다. 그건 맞지 않습니다. 다른 사람들은 목표에 대해 옳습니다.

답변4

[Unit]
Description=mount/repair remaining filesystems (all persistent fs beyond "/")
DefaultDependencies=no
After=sysinit.target local-fs.target
Before=basic.target

[Service]
Type=oneshot
ExecStart=/opt/intermodul-mounts/start.sh
TimeoutSec=0
RemainAfterExit=yes

[Install]
WantedBy=basic.target

이러한 라인에 따라 작업을 수행하면 장치가 네트워크보다 먼저 실행되지만 대부분의 다른 중요한 설정이 발생한 후에 실행됩니다.

관련 정보