Ubuntu Upstart에서 서비스를 만드는 방법


21

java -jar abc.jar터미널 에 입력하여 실행할 수있는 Java 실행 프로그램이 있습니다 . 서비스로 어떻게 실행할 수 있습니까? 을 입력하는 것과 같은 서비스로 실행하고 싶습니다 service abc start.


더 완전한 대답은 여기에 있습니다 : unix.stackexchange.com/questions/1924/… 기본적으로 우분투에서는 서비스를 시작 / 중지 / 다시 시작할 수있는 /etc/init.d에 대한 스크립트를 만들 수 있습니다.
Mr Ed

답변:


41

14.04에 있는지 확인하십시오. Ubuntu 16.04 이상은 Upstart가 아닌 systemd를 사용합니다.

Upstart 스크립트는에 배치 /etc/init/되고 끝나는 스크립트 파일 입니다 .conf.

시작 시간을 나타내는 섹션과 실행 명령이있는 섹션이 필요합니다.

샘플로 시작하는 가장 쉬운 스크립트는 다음과 같습니다.

# myprogram.conf
start on filesystem
exec /usr/bin/java -jar /path_to/program

아래에 루트로 작성되었습니다 /etc/init/myprogram.conf.

스크립트에 둘 이상의 명령 행이 필요한 경우 행 script대신 섹션을 사용하십시오 exec.

# myprogram.conf
start on filesystem
script
    /usr/bin/java -jar /path_to/program
    echo "Another command"
end script

서비스에서 bash 완료를 사용하려면 /etc/init.d폴더에 심볼릭 링크를 추가하십시오 .

sudo ln -s /etc/init/myprogram.conf /etc/init.d/myprogram

그런 다음 시작하고 중지하십시오.

sudo service myprogram start

upstart cookbook 에 따르면 실행할 pre-start/ post-startpre-stop/ post-stop명령을 만들 수 있습니다 .

또한 프로세스가 실행 중인지 확인하고 싶습니다. 이 질문을 확인 하고 pre-start섹션을 사용 하십시오.


1
로 실행 가능하게 만들어야 할 수도 있습니다 sudo chmod +x /etc/init.d/myprogram. 주의 : 귀하의 답변 방법은 Ubuntu 16.04에서 작동하지 않습니다!
juliocesar

2
@juliocesar 16.04는 Upstart가 아닌 systemd를 사용합니다.
Rael Gugelmin Cunha

start on필수 스탠자가 아닙니다. 여기서 읽을 수 있듯이 : 이러한 작업은 관리자 만 제어 할 수 있습니다 .
SuB

@SuB yeap, 그러나 작업은 자동으로 시작되지 않으며, 질문 작성자는 서비스처럼 작동하는 것을 원한다는 것이 분명했습니다. 즉, 자동으로 시작됩니다.
Rael Gugelmin Cunha

네. 알아. 답변을 완료하기 위해 의견을 추가했습니다.
SuB

0

가동을 시작해야합니다. http://upstart.ubuntu.com/getting-started.html

Upstart는 좋은 ols SysV init 스크립트와 비교하여 (IMHO) 재앙입니다. 업 스타트는 추가 된 작업에 대한 거꾸로 적은 노력으로 더 많은 노력을 기울입니다. 그 말로, 나는 명백한 ;-)를 진술하는 나를 위해 임무를 수행 할 몇 명의 신생 수비수가있을 것이라고 생각합니다.


1
/etc/init/yourservice.conf에있는 파일 일 뿐이며 시작 시간을 나타내는 줄과 exec 명령에 대한 줄입니다. Fedora는 upstart도 사용합니다. 또한 데비안조차도 시작 스키마를 SystemD로 변경하여 향후 우분투 스키마가 될 것입니다.
Rael Gugelmin Cunha
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.