시작할 때 init.d 스크립트가 실행되지 않습니다


15

화면을 사용하여 전용 서버에서 Counter-Strike 게임 서버를 호스팅하고 있습니다. 서버를 시작 / 중지하려고 할 때이 스크립트를 실행했습니다.

#! /bin/sh
# /etc/init.d/css-server
#

case "$1" in
  start)
    echo "Starting Nullus Imprimis war server..."
    screen -A -m -d -S css-war-server /home/css-servers/war-server/css/srcds_run -game cstrike +map de_dust2 +maxplayers 16 -autoupdate -port 2555 -tick 100 
    echo "Nullus Imprimis war server started"
    echo "Starting Nullus Imprimis pub server #1..."
    screen -A -m -d -S css-pub-server-1 /home/css-servers/pub-server-1/css/srcds_run -game cstrike +map de_dust2 +maxplayers 32 -autoupdate -port 2666 -tickrate 100
    echo "Nullus Imprimis pub server #1 started"
    ;;
  stop)
    echo "Stopping Nullus Imprimis war server..."
    screen -S css-war-server -X quit
    echo "Nullus Imprimis war server stopped"
    echo "Stopping Nullus Imprimis pub server #1..."
    screen -S css-pub-server-1 -X quit
    echo "Nullus Imprimis pub server #1 stopped"
    ;;
  *)
    echo "Usage: /etc/init.d/css-servers {start|stop}"
    exit 1
    ;;
esac

exit 0

이 스크립트 ( css-servers)를 /etc/init.d/시스템에 부팅 할 때 실행된다는 것을 알고 있습니다. 그러나 내가 사용하는 활성 화면을 확인하면 screen -ls실행중인 것이 없습니다.

Ubuntu Server에서 시작할 때 어떻게 실행할 수 있습니까?

답변:


33

스크립트가있는 /etc/init.d것만으로는 시작할 때 실행하기에 충분하지 않습니다.

시작에 추가하려면 Ubuntu에 다음을 알려야합니다.

sudo update-rc.d css-servers defaults

스크립트가 올바르게 포맷되고 실행 가능한 비트 세트 등인 경우 다음 부팅시 시작해야합니다. apt-get/ Software Center 에서 설치 한 패키지는 이 명령 또는 이와 동등한 명령을 자동으로 실행하므로 일반적으로 걱정할 필요가 없습니다. 그것에 대해.

즉시 시작하려면 직접 호출하면됩니다.

sudo service css-servers start

이것은 매우 이상합니다. 이 시점까지 내 스크립트는이 update-rc.d명령 없이 시작할 때 실행됩니다 . 스크립트를 업데이트 한 후이 명령을 실행할 때까지 더 이상 실행되지 않았습니다. 감사. 그건 그렇고, 시작할 때 (update-rc.d에서와 같이) 실행에서 어떻게 "등록 취소"할 수 있습니까?
Nikos

1
@ Nik-Lz이 Q & A는 upstart를 사용했던 구식 및 오래된 Ubuntu 버전을 나타냅니다. 더 이상 사용하지 말고, 현재 완전히 다른 서비스 시스템을 사용하는 현재 시스템을 사용해야합니다.
Michael Hampton

7

첫 번째 부분이 완료되었습니다. /etc/init.d초기화 스크립트가 실행되는 곳입니다. 그러나 자동으로 실행되지는 않습니다.

/etc/rc*.d디렉토리 를 기호 링크로 지정한 순서대로 실행합니다 . 각 실행 레벨에는 자체 디렉토리가 있습니다. 링크 이름으로 시작하는 스크립트 K는 중지 S매개 변수로 실행되고 이름으로 시작하는 스크립트 는 start 매개 변수로 실행됩니다. 일반적으로 파일 이름 은 시퀀싱에 사용되는 두 자리 숫자로 시작 K하거나 S그 뒤에 스크립트 이름으로 끝납니다 /etc/init.d.

링크는 수동으로 만들 수 있지만 일반적으로 스크립트를 사용하여 만듭니다. 일반적인 스크립트 update-rc.d는 우분투에서 사용할 수 있습니다. 이 명령 man update-rc.d은 사용자에게 사용 설명서를 제공합니다. 귀하의 경우 시도하십시오 :

sudo update-rc.d css-servers defaults

init 스크립트를 사용하여 시작하려면 다음을 시도하십시오.

sudo /etc/init.d/css-servers start

일반적으로 스크립트가 원하는대로 작동하도록 서버를 시작하고 중지합니다. 그런 다음 런레벨 디렉토리 update-rc.d에 추가합니다 /etc/rc.d.


1

부팅 할 때 서비스가 시작되지 않는 이유를 알 수없는 경우 그러나 서비스를 수동으로 시작하려고하면 제대로 작동합니다 service <your service> start. 이 경우 표준 출력 및 오류 출력을 일부 파일로 리디렉션하십시오. 시스템을 부팅하는 동안 시작되지 않는 이유를 알 수 있습니다.

예를 들어 스크립트 내부

case "$1" in
  start)
    echo "Starting Service "
    <your command to start the service > /tmp/bootservice.log 2>&1
    ;;
  stop)
    echo "Stopping Service "
    <your command to start the service > /tmp/bootservice.log 2>&1
    ;;
  *)
    echo "Usage: /etc/init.d/test {start|stop}"
    exit 1
    ;;
esac

exit 0
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.