1. Имеем сервер, который имеет консоль.
2. Чтобы иметь возможность в любой момент зайти в консоль сервера, сервер стартуется через screen, реализуется это скриптом. Типа
#/bin/bash
export LD_LIBRARY_PATH=/usr/steam/hlds_l:$LD_LIBRARY_PATH
screen -A -m -d -S csservo nice --4 /usr/steam/hlds_l/hlds_run -pingboost 2 -game cstrike -nomaster -nowon -insecure +servercfgfile server.cfg +mapcyclefile mapcycle.cfg -heapsize 131072
3. Сервер стартует с nice -n -10 для повышенного приоритета
4. Скрипт стартует с загрузкой компьютера, запускается от root. Рестартуется в cron от root.
5. Задача уйти от root и запускать от другого пользователя типа csuser к примеру.
Вот что делал:
Так как повышеный приоритет обычному пользователю задавать запрещено, решил у чуть переделать скрипт для тестов.
cat start.sh
#/bin/bash
export LD_LIBRARY_PATH=`PWD`:$LD_LIBRARY_PATH
./hlds_run -game cstrike -nomaster -nowon -insecure
Выполняю: sudo -H -u csuser screen -dmS csserv /usr/bin/games/hlds_l/start.sh
Сервер стартует под новым пользователем, все ок. Но есть одно но:
если залогиниться под юзером csuser и выполнить screen -dr csserv, то я попадаю в консоль сервера. Если выполнить под root'ом sudo -H -u csuser screen -dr csserv, то ругается вот так:
Cannot open your terminal '/dev/pts/1' - please check.
Ну это полбеды, если поможете с ней, уже будет хорошо. Но еще бы хотелось, чтобы пользователю csuser была дана возможность задавать повышеные приоритеты через nice, в sudoers пробовал
csuser ALL=NOPASSWD: /bin/nice , но это не всего-лишь разрешение, использовать nice, а не задавать высокий приоритет. Что делать, помогите пожалуйста.
cnyx: Запуск програмы под пользователем с использованием screen, как?
Бррр.. Чет ничего не понял, зачем в консоль вообще заходить через screen? И вопрос откуда заходить надо?
Есть сервер, у него своя консоль: в ней логи идут, в ней можно команды выполнять. Если запустить через ssh, а потом отключиться, то сервер остановится. Нужно чтобы сервак продолжал работать после закрытия ssh, нужно иметь возможность подключиться к серверу в любой момент. Для этого screen и использую.
Допустим можно так screen -dmS scrmegalog tail -f /var/log/megalog запустить, а после в любой момент времени выполнив screen -rd scrmegalog увидеть последние строки этого tail'а.
Фигню какую-то рассказываешь. Если надо запустить какое-то приложение(это называется сервис, но никак не сервер) удаленно, через тот же ssh, а потом отключиться, но чтобы приложение продолжало работать, надо запустить сервис в фоне, добавив в конце команды &.
Вывод работы приложения можно всегда перенаправить куда-либо, например в файл, или вообще по сети на другой сервер. Это надо? Или все-таки объясни более подробно как работает этот сервер/сервис, что за система, что в итоге должно получиться? Я до сих пор до конца не понял всего механизма..
[ Редактирование 02.03.2007 - 19:36:59 ]
> надо запустить сервис в фоне, добавив в конце команды &.
Для пущего эффекта лучше запускать конструкцией вроде
[code]nohup application_name 2>error.log >application.log &[/code]
тогда точно не отвалится
ой мамо
просто запускаешь screen - оно тебе дает тотже шелл но из себя, там можешь запускать что угодно - скрин удержит
закрываешь ssh
открываешь снова
говоришь там screen -r и он тебе вернет твой скрин
ну и само собой man screen ибо там много интересного
таки попытался понять цель
man screen на тему multiuser mode
чтобы цепляться от рута к скрину другого юзера
а вообще можешь просто пускать скрин от рута а сервак в нем уже от юзера
2 еdge
Это не сервис, это СЕРВЕР, игровой, CS если быть точным. Если его просто запустить, без всяких screen и &, то на экране будет консоль сервера. С чем сравнить то, даже не знаю. Ну допустим как канал в IRC: кто подлкючился, отключился, мессаги разные, варнинги и т.п. + можно выполнить какую-то команду. Но ты запустив его потеряешь shell, активным станет сама консоль сервера игрового. А вот чтобы иметь возможность после запуска игрового сервера работать в шелле и иметь возможность в любой момент зайти в консоль сервера, я использую screen. Допустим зашел в консоль, сделал amx_reloadadmins - перегрузил админов, а дальше там что-то еще тестирую.
2 Vitls
Запущу в фоне, как мне к консоли сервера потом подключиться?
2 WhiteDragon
Кк, сейчас насчет multiuser mode почитаю
Ээх.. лучше б ты ничего не запускал.
да кстати не знаю как там у cs но у кваковского движка есть rcon
ну допустим у КС движка тоже есть ркон...
но не всегда удобно через него работать
Последние комментарии
9 лет 49 недель назад
10 лет 16 недель назад
10 лет 26 недель назад
10 лет 26 недель назад
11 лет 16 недель назад
11 лет 16 недель назад
11 лет 16 недель назад
11 лет 17 недель назад
11 лет 17 недель назад
11 лет 18 недель назад