나는 debian stable과 일부 클라이언트를 서버 인스턴스로 사용하여 내 서버에서 여러 개의 openvpn 인스턴스를 실행하고 있습니다. 이제 인스턴스 중 하나가 실패하면 systemd는 전체 프로세스 그룹을 종료하고 다시 시작하는 것처럼 보입니다.
5월 27일 12:09:44 tritone systemd[1]: openvpn@client_uk.service: 기본 프로세스가 종료되었습니다. 코드=종료, 상태=1/FAILURE 5월 27일 12:09:44 tritone systemd[1]: openvpn@client_uk.service 장치가 실패 상태로 전환되었습니다. 5월 27일 12:10:01 tritone systemd[1]: client_rhode에 대한 OpenVPN 연결을 중지하는 중... 5월 27일 12:10:01 tritone systemd[1]: client_uk에 대한 OpenVPN 연결 시작 중... 5월 27일 12:10:01 tritone systemd[1]: client_ukraine에 대한 OpenVPN 연결을 중지하는 중... 5월 27일 12:10:01 tritone systemd[1]: server_udp에 대한 OpenVPN 연결을 중지하는 중... 5월 27일 12:10:01 tritone systemd[1]: OpenVPN 서비스를 중지하는 중... 5월 27일 12:10:01 tritone systemd[1]: OpenVPN 서비스 시작... 5월 27일 12:10:01 tritone systemd[1]: OpenVPN 서비스를 시작합니다. ...
IMHO 이것은 인기가 없고 중복됩니다. 실패한 단일 서비스를 다시 시작하는 것으로 충분합니다. 이것은 다음의 시스템 구성입니다 /etc/systemd/system/multi-user.target.wants/openvpn.service
.
[단위] 설명=OpenVPN 서비스 이후 = network.target [제공하다] 종류=일회용 종료 후 유지 = 예 ExecStart=/bin/true ExecReload=/bin/true 작업 디렉토리=/etc/openvpn [설치하다] WantedBy=다중 사용자.대상
ExecReload가 로 설정된 구성을 본 적이 있는데 kill -HUP $MAINPID
systemctl status에 표시된 대로 내 서버도 동일한 작업을 수행하는 것 같습니다.
Process: 5893 ExecReload=/bin/kill -HUP $MAINPID (code=exited, status=0/SUCCESS)
그래서 내가 이해하지 못하는 것은 ExecReload를 구성하는 시스템이 실제로 다르게 말한다면 이 kill 명령은 어디에 정의되어 있습니까? 그리고 서비스가 정의되어 있어도 Type=oneshot
왜 다시 시작해야 합니까? 내가 보고 있는 파일이 맞는지?
재시작 명령은 어떤 모습이어야 합니까? 프로세스가 종료된 것으로 간주되므로 Kill이 작동하지 않습니다.
편집하다:내가 발견한 것은 /lib/systemd/system-generators/openvpn-generator
그럼에도 불구하고 언제 실행되거나 실행되는지가 여전히 명확하지 않다는 것입니다. selinux 제한으로 인해 실제로 링크가 생성되지 않아 생성기가 실패하는 것 같습니다. 그런데 이 파일은 init용으로 사용되는 것 같습니다. 그렇다면 왜 더미 파일이 생성되는지 궁금합니다./lib/systemd/system/[email protected]
/etc/systemd/system/multi-user.target.wants/openvpn.service
답변1
CONFIGNAME을 구성 파일 이름으로 사용하는 경우 .conf
시도해 볼 수 있습니다.
systemctl restart [email protected]