네트워크 구성이 저장된 마운트를 설정 해야하는 새로운 서비스 (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
답변
실수는 내가 항상 섞어 주요 것들 중 하나 간단하고 : 당신은 혼합 Before
과 RequiredBy
. 그것은 함께 가지 않습니다. 다른 사람들은 목표에 대해 정확합니다.
답변
[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
이 라인을 따라 무언가를 수행하면 네트워크 이전에 본 장치가 실행되었지만 다른 중요한 설정이 대부분 수행 된 후에야합니다.