Programing

백그라운드 프로세스로 서버에서 Java jar 파일 실행

lottogame 2020. 8. 29. 11:51
반응형

백그라운드 프로세스로 서버에서 Java jar 파일 실행


두 응용 프로그램간에 통신하려면 서버에서 Java jar를 실행해야합니다. 실행하기 위해 두 개의 셸 스크립트를 작성했지만 해당 스크립트를 시작하면 프로세스를 종료 / 종료 할 수 없습니다. ctrl+를 누르 C거나 콘솔을 닫으면 서버가 종료됩니다. 아무도이 스크립트를 일반 서버로 실행하도록 수정하는 방법을 도와 줄 수 있습니까?

 #!/bin/sh
java -jar /web/server.jar
echo $! 
#> startupApp.pid

이것을 시도 할 수 있습니다.

#!/bin/sh
nohup java -jar /web/server.jar &

& 기호는 프로그램이 백그라운드에서 실행되도록 전환합니다.

nohup 유틸리티는 로그 아웃 한 후에도 백그라운드에서 인수로 전달 된 명령을 실행합니다.


Ubuntu를 사용 중이고 "Upstart"(http://upstart.ubuntu.com/)가있는 경우 다음을 시도해 볼 수 있습니다.

창조하다 /var/init/yourservice.conf

다음 내용으로

description "Your Java Service"  
author "You"  

start on runlevel [3]  
stop on shutdown  

expect fork  

script     
    cd /web 
    java -jar server.jar >/var/log/yourservice.log 2>&1  
    emit yourservice_running  
end script  

이제 service yourservice startservice yourservice stop명령을 실행할 수 있습니다 . /var/log/yourservice.log작동하는지 확인하기 위해 꼬리 를 달 수 있습니다 .

콘솔 창을 호깅하지 않고 콘솔에서 jar를 실행하려면 다음을 수행하면됩니다.

java -jar /web/server.jar > /var/log/yourservice.log 2>&1

Systemd 지금 배포판의 대부분에서 실행

1 단계:

내 사용자 정의 서비스 찾기 /usr/lib/systemd/system/

2 단계:

좋아하는 텍스트 편집기로 텍스트 파일을 만듭니다. whatever_you_want.service

3 단계 :

다음 템플릿 을 파일에 넣기whatever_you_want.service

[Unit]
Description=webserver Daemon

[Service]
ExecStart=/usr/bin/java -jar /web/server.jar
User=user

[Install]
WantedBy=multi-user.target

4 단계 :

슈퍼 사용자로 서비스 실행

$ systemctl start whatever_you_want.service # starts the service
$ systemctl enable whatever_you_want.service # auto starts the service
$ systemctl disable whatever_you_want.service # stops autostart
$ systemctl stop whatever_you_want.service # stops the service
$ systemctl restart whatever_you_want.service # restarts the service

참고 URL : https://stackoverflow.com/questions/12102270/run-java-jar-file-on-a-server-as-background-process

반응형