아래와 같이 systemd 파일이 있습니다
[Unit]
Description=ACDS Relay Service (running on port 10400)
[Service]
Type=forking
PIDFile=/opt/liggable/relay/var/relay.pid
RemainAfterExit=no
ExecStart=/bin/bash /opt/liggable/relay/bin/start-acds.sh
ExecStop=/bin/kill $MAINPID
Restart=always
WorkingDirectory=/opt/liggable/relay
User=javauser
Group=javauser
PrivateTmp=true
TimeoutSec=90
SuccessExitStatus=1 143
[Install]
WantedBy=multi-user.target
예상되는:
위에서 두 개의 Java 프로세스 A와 B가 시작되었습니다 /opt/liggable/relay/bin/start-acds.sh
. 프로세스 B는 작업 중 하나를 수행하기 위해 프로세스 A를 중지합니다. 이 기간 동안 시스템이 A가 시작될 때까지 기다리기를 원합니다. A를 다시 시작하십시오. 그렇지 않으면 아무 작업도 수행되지 않습니다.
실제:
B가 A를 다시 시작하려고 하는 두 개의 Java 프로세스 A와 B를 시작합니다 /opt/liggable/relay/bin/start-acds.sh
. 그렇게 하면 systemd가 Restart=always
서비스 A와 B를 다시 시작합니다. 이는 예상된 동작이 아닙니다.
프로세스 B가 시스템을 다시 시작하는 대신 프로세스 A를 시작하기 전에 잠시 기다리고 싶다면 누구든지 이 작업을 수행하는 방법을 제안할 수 있습니까?