네트워킹이 시작되기 전에 시스템 서비스를 시작하는 방법은 무엇입니까? filesystems (all

네트워크 구성이 저장된 마운트를 설정 해야하는 새로운 서비스 (Debian Jessie에서)를 설정하려고하므로 네트워킹이 시작되기 전에이 서비스가 완료 되어야 합니다.

나는 다음을 시도했다.

[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

여전히 첫 번째 구성이 예상대로 작동하지 않는 이유를 이해하고 싶습니다 …?



답변

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

network-pre.target네트워크가 시작되기 전에 무언가를 설정 하려면 사용 하고 싶습니다

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

다음 [Unit]섹션에 배치해야합니다 .

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

참고


답변

데비안 Jessie에서와 같이 netfilter-persistent 패키지 (네트워크가 가동되기 전에 iptables 규칙을로드 할 수 있도록)에는 다음과 같은 netfilter-persistent.service 가 있습니다.

# 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

답변

실수는 내가 항상 섞어 주요 것들 중 하나 간단하고 : 당신은 혼합 BeforeRequiredBy. 그것은 함께 가지 않습니다. 다른 사람들은 목표에 대해 정확합니다.


답변

[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

이 라인을 따라 무언가를 수행하면 네트워크 이전에 본 장치가 실행되었지만 다른 중요한 설정이 대부분 수행 된 후에야합니다.