화면을 사용하여 전용 서버에서 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에서 시작할 때 어떻게 실행할 수 있습니까?
답변
스크립트가있는 /etc/init.d
것만으로는 시작할 때 실행하기에 충분하지 않습니다.
시작에 추가하려면 Ubuntu에 다음을 알려야합니다.
sudo update-rc.d css-servers defaults
스크립트가 올바르게 포맷되고 실행 가능한 비트 세트 등인 경우 다음 부팅시 시작해야합니다. apt-get
/ Software Center 에서 설치 한 패키지는 이 명령 또는 이와 동등한 명령을 자동으로 실행하므로 일반적으로 걱정할 필요가 없습니다. 그것에 대해.
즉시 시작하려면 직접 호출하면됩니다.
sudo service css-servers start
답변
첫 번째 부분이 완료되었습니다. /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
.
답변
부팅 할 때 서비스가 시작되지 않는 이유를 알 수없는 경우 그러나 서비스를 수동으로 시작하려고하면 제대로 작동합니다 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