2017-11-22 8 views
0

내 systemd 유닛 파일은 systemd 호출이 완료를 다시로드 할 때 나는 그 권리를 실현하고있어이Systemd 다시로드 프로세스가

start() { 
    java -jar server.jar & 
} 
reload() { 
    #do some application specific reload stuff 
    start 
} 

과 같은 형태 살해 도착, 프로세스가 java -jar을 실행 실제로 죽었어요. Systemd는 내 재 장전 프로세스가 완료되었다고 생각하고 죽이는 것으로 보입니다. 프로세스를 죽이는 동작을 구성하고 취소 할 수있는 방법이 있습니까? 나는 그 과정을 부인하고, 서비스 파일에 KillMode=blahType=blah을 썼지 만 아무런 결과도 얻지 못했습니다.

답변

0

나는 당신의 질문을 이해하면 내가 바로, 당신이 server.jar을 실행하기위한 systemd 유닛 파일을 원하는가, 모르는에 CentOS 7.4에서 실행? 다음 순서에 따라 시도해보십시오.

먼저 blah 서비스 단위 파일을 만드십시오.

# vim /etc/systemd/system/blah.service 

[Unit] 
Description=blah service 
After=network.target 
Requires=network.target 

[Service] 
Type=simple 
EnvironmentFile=/etc/sysconfig/blah 
ExecStart=/usr/bin/java -jar server.jar 
Restart=always 
User=blah_USERNAME 

[Install] 
WantedBy=multi-user.target 

그리고 blah 서비스 단위 파일을 다시로드하십시오.

# systemctl daemon-reload 

테스트 해보세요.

# systemctl start blah 
# systemctl status blah 
# systemctl restart blah 
# systemctl status blah 

이 정보가 도움이되기를 바랍니다.

+0

그래서 이미 systemd 단위 파일이 있습니다. 그러나 reload()를 호출하면 프로세스는 다시로드가 실행되는 동안 만 유지됩니다. 예를 들어 reload 함수에'sleep 10'을 넣으면 10 초 동안 두 개의 서버 인스턴스가 실행됩니다. 그런 다음, 재 장전 기능이 완료되고 항아리가 죽습니다 ... 내가 원하는 것이 아닙니다. –