Я размещаю некоторые игровые серверы Counter-Strike на своем выделенном сервере с помощью screen. У меня есть этот скрипт, который я запускаю, когда хочу запустить / остановить серверы:
#! /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?
update-rc.d
команды. Я обновил свой скрипт, после чего он больше не запускался, пока не запустил эту команду. Благодарю. Кстати, как мы можем «отменить» его запуск при запуске (как мы делали с update-rc.d)?Вы сделали первую часть.
/etc/init.d
где запускаются сценарии инициализации. Однако они не запускаются автоматически.Они запускаются в порядке, указанном символическими ссылками на
/etc/rc*.d
каталоги. Каждый уровень запуска имеет свой собственный каталог. Сценарии с именами ссылок, начинающимися сK
, запускаются с параметром stop, а сценарии с именами, начинающимися сS
- с параметром start. По соглашению имена файлов начинаются сK
илиS
после двухзначного числа, используемого для последовательности, и заканчиваются именем скрипта в/etc/init.d
.Ссылки могут быть созданы вручную, но обычно создаются с помощью скрипта. Общий скрипт
update-rc.d
доступен в Ubuntu. Командаman update-rc.d
предоставит вам документацию о том, кто ее использует. В вашем случае попробуйте:Чтобы запустить его с помощью сценария инициализации, попробуйте:
Я обычно запускаю и останавливаю сервер таким образом, чтобы убедиться, что скрипт работает как нужно. Затем я запускаю,
update-rc.d
чтобы добавить его в/etc/rc.d
каталоги уровня запуска.источник
Если вы не понимаете, почему ваш сервис не запускается при загрузке. Тем не менее, он работает правильно, когда вы пытаетесь запустить службу вручную
service <your service> start
. В этом случае попробуйте перенаправить стандартный вывод и вывод ошибок в какой-либо файл. Что может дать вам некоторое представление о том, почему он не запускается при загрузке системы.например, внутри вашего скрипта
источник