실패한 장치에서 systemd가 ExecStop을 실행하도록 강제합니다.

실패한 장치에서 systemd가 ExecStop을 실행하도록 강제합니다.

ExecStop시작할 수 없다고 생각되는 장치에 대해 systemd가 명령을 실행하도록 강제하는 방법이 있습니까?

나는 Buster-backportswireguard 패키지와 wireguard의 기본 systemd 장치(아래 발췌)를 사용하여 Debian 10 시스템을 실행하고 있습니다.

배포를 테스트할 때 systemd를 사용하여 터널이 시작되었지만 Postup에서 오류가 발생하여 제 경우에는 터널이 생성되었지만 종료 코드로 인해 systemd가 터널에 실패했습니다. 이는 터널이 실제로 생성되었음을 분명히 wg show보여주며 모든 경로/규칙이 올바르게 추가되지 않았을 뿐입니다.

PostUp을 수정한 후 하나를 원하지만 오류가 발생합니다. 표시되는 출력을 살펴보세요. Systemd는 터널이 처음부터 시작되지 않은 것처럼 동작합니다. 실행도 시도해 보았지만 장치가 시작될 수 없고 멈출 것이 없다고 생각하기 때문에 systemd는 아무것도 하지 않습니다.systemctl restart [email protected]systemctl restart [email protected]wg-quick: 'wg0' already existssystemctl stop [email protected]

나는 수동으로 작업을 수행하여 /usr/bin/wg-quick down wg0systemd를 행복하게 만드는 상태로 시스템을 만들 수 있다는 것을 알고 있지만 systemd가 서비스 상태에 대해 혼란스럽고 무엇에 관계없이 ExecStop 명령을 실행해야 한다고 믿게 만들 수 있는 방법이 있습니까? 그것은 상태가 무엇이라고 생각합니까? 중지라고 말하면 systemd에서 ExecStop 중지를 실행하고 싶습니다! 통과할 수 있는 강제 옵션이나 도움이 될 만한 것이 있는 경우 문서에는 표시되지 않습니다.

cat /lib/systemd/system/[email protected]

[Unit]
Description=WireGuard via wg-quick(8) for %I
...

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/bin/wg-quick up %i
ExecStop=/usr/bin/wg-quick down %i
Environment=WG_ENDPOINT_RESOLUTION_RETRIES=infinity
...

관련 정보