관리자 권한으로 시작시 Tomcat 시작


23

시스템에 로그인하기 전에 하나의 프로세스를 실행해야합니다. 서비스처럼 실행하는 방법? 리눅스에서 어떻게 서비스를합니까?

우분투와 페도라에서? 이 서비스는 바람둥이 사용자 정의


6
Linux 배포판에서 서비스 시작 방법은 매우 조건부입니다. 지금 당장 문제에 대해 생각하고 있지 않다고 생각하기 때문에 무엇을 성취하려고하는지 (그리고 배포 및 데스크탑 환경에 대해) 알려주십시오.
xenoterracide

답변:


23

시스템에 로그인 하지 않거나 서비스 를 시작하기 전에 (예 : "부팅") 서비스를 실행하려면 시작 스크립트를 작성하여 부팅 순서에 추가해야합니다.
서비스 스크립트에는 시작, 중지 및 다시 시작의 세 부분이 있습니다.
서비스 스크립트의 기본 구조는 다음과 같습니다.

#!/bin/bash
#
RETVAL=0;

start() {
echo “Starting <Service>”
}

stop() {
echo “Stopping <Service>”
}

restart() {
stop
start
}

case “$1″ in
start)
  start
;;
stop)
  stop
;;
restart)
  restart
;;
*)

echo $”Usage: $0 {start|stop|restart}”
exit 1
esac

exit $RETVAL  

스크립트를 원하는대로 조정하고 나면 /etc/init.d/에 스크립트를 넣고
시스템 서비스 시작 프로세스에 추가하십시오 (Fedora에서는 Ubuntu 사용자가 아닙니다.> D).

chkconfig -add <ServiceName>  

서비스는 시스템 부팅 프로세스에 추가되며 수동으로 다시 시작할 필요가 없습니다.

건배!


2
시작, 중지 및 재시작 중에는 일반적으로 간단한 init 스크립트에 충분합니다. 데비안과 init-functions 패키지에 status_of_proc ()를 포함하는 다른 배포판에서 쉽게 수행 할 수있는 '상태'액션을 포함하고 싶을 수도 있습니다. 잘 관리 된 패키지에는 LSB에 필요한 모든 기능 ( refspecs.freestandards.org/LSB_3.1.0/LSB-Core-generic/… )이 포함됩니다. 우분투에서 Tomcat과 함께 배포 된 init 스크립트에는 이러한 모든 작업이 포함되어 있으므로 아마도 사용하는 것이 좋습니다.
Steven D

19

init 시스템에 따라 init 스크립트를 다르게 작성합니다. Fedora는 시작 및 시스템 선택과 SysV 호환성을 제공합니다.

건방진 녀석

  • 서비스 정의 파일을 다음과 같이 작성하십시오. /etc/init/custom-tomcat.conf
  • 안에 넣다:

    start on stopped rc RUNLEVEL=3
    respawn
    exec /path/to/your/tomcat --and --parameters
    

그리고 Tomcat은 시스템 시작시 시작해야합니다.

체계화

  • 서비스 정의 작성 /etc/systemd/system/custom-tomcat.service
  • 안에 넣다:

    [Service]
    ExecStart=/path/to/your/tomcat --and --parameters
    Restart=always
    
    [Install]
    WantedBy=multi-user.target
    

를 사용하여 서비스를 활성화하십시오 systemctl enable custom-tomcat.service. 부팅 할 때마다 시작됩니다.

물론 두 초기화 시스템 모두에 대한 구성 옵션이 더 적으므로 설명서에서 구성 옵션을 확인할 수 있습니다.


7

Tomcat은 상당히 일반적인 서비스이므로 이미 배포판에서 제공하는 init 스크립트를 보는 것이 좋습니다. 거의 또는 전혀 조정하지 않고도 사용자 정의 된 바이너리와 함께 작동 할 수 있습니다.


6

cron데몬 이있는 경우 사전 정의 된 cron 시간 후크 중 하나 @reboot는 시스템 시작시 자연스럽게 실행됩니다. 파일 crontab -e을 편집 crontab하고 행을 추가 하려면 실행하십시오 .

@reboot /your/command/here

이것은 모든 스타트 업에 적용됩니까 아니면 재부팅 만됩니까?
WhyNotHugo

vixie-cron 또는 다른 cron AFAIK가 아닌 fcron에만 적용됩니다.
Maciej Piechotka

@Maciej 그것은 확실히 vixie-cron에서 작동합니다; 그것이 내가 사용하는 것
Michael Mrozek

@Hugo 모든 스타트 업
Michael Mrozek

6

컴퓨터가 시작된 후 사용자가 로그인하기 전에 단순히 스크립트를 실행하려면이 작업을 정확하게 해결하기 위해 /etc/rc.local 스크립트를 편집하면됩니다.


3

다음과 같이보다 정교한 스크립트를 작성하여 특정 사용자의 권한으로 실행할 수 있습니다.

#!/bin/sh
NAME=myservice
DESC="My Service"
USERGROUP="myservice:myservice"

#Helper functions
start() {
        start-stop-daemon --start --quiet --background --make-pidfile \
                --pidfile /var/run/$NAME.pid --chuid $USERGROUP \
                --exec /usr/local/bin/myservice
}

stop() {
        start-stop-daemon --stop --quiet --pidfile /var/run/$NAME.pid \
                --exec myservice --retry 30
}

case "$1" in
  start)
        echo -n "Starting $DESC: "
        start
        echo "$NAME."
        ;;
  stop)
        echo -n "Stopping $DESC: "
        stop
        echo "$NAME."
        ;;
  restart)
        echo -n "Restarting $DESC: "
        #set +e
        stop
        #set -e
        #sleep 1
        start

        echo "$NAME."
        ;;
  *)
        N=/etc/init.d/$NAME
        echo "Usage: $N {start|stop|restart}" >&2
        exit 1
        ;;
esac

exit 0

스크립트는 /etc/init.d/myservice에 들어가며 다음을 실행하여 서비스를 시작합니다.

/etc/init.d/myservice start

작동 방법을 이해하려면 start-stop-daemon의 매뉴얼 페이지를 읽으십시오.


1

우분투 또는 데비안에서 사용할 수있는 것처럼

update-rc.d your_service defaults

제거

update-rc.d -f your_service remove

안녕! \영형

함수 상태와 강제 재로드를 LSB- 컴파일러로 구현하는 것이 좋습니다.


내 데몬을 service --status-all목록에 표시하는 방법 ?
Necktwi 2016 년
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.