cnyx: Запуск програмы под пользователем с использованием screen, как?

12 сообщений / 0 new
Последнее сообщение
Гость
cnyx: Запуск програмы под пользователем с использованием screen, как?

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, а не задавать высокий приоритет. Что делать, помогите пожалуйста.

edge (не проверено)

Бррр.. Чет ничего не понял, зачем в консоль вообще заходить через screen? И вопрос откуда заходить надо?

cnyx (не проверено)

Есть сервер, у него своя консоль: в ней логи идут, в ней можно команды выполнять. Если запустить через ssh, а потом отключиться, то сервер остановится. Нужно чтобы сервак продолжал работать после закрытия ssh, нужно иметь возможность подключиться к серверу в любой момент. Для этого screen и использую.

cnyx (не проверено)

Допустим можно так screen -dmS scrmegalog tail -f /var/log/megalog запустить, а после в любой момент времени выполнив screen -rd scrmegalog увидеть последние строки этого tail'а.

edge (не проверено)

Фигню какую-то рассказываешь. Если надо запустить какое-то приложение(это называется сервис, но никак не сервер) удаленно, через тот же ssh, а потом отключиться, но чтобы приложение продолжало работать, надо запустить сервис в фоне, добавив в конце команды &.
Вывод работы приложения можно всегда перенаправить куда-либо, например в файл, или вообще по сети на другой сервер. Это надо? Или все-таки объясни более подробно как работает этот сервер/сервис, что за система, что в итоге должно получиться? Я до сих пор до конца не понял всего механизма..
[ Редактирование 02.03.2007 - 19:36:59 ]

Vitls
Аватар пользователя Vitls
Не в сети
Зарегистрирован: 21/09/2010

> надо запустить сервис в фоне, добавив в конце команды &.
Для пущего эффекта лучше запускать конструкцией вроде
[code]nohup application_name 2>error.log >application.log &[/code]
тогда точно не отвалится

Дело не в том как болезнь вылечить.
Дело в том как других заразить.

WhiteDragon (не проверено)

ой мамо
просто запускаешь screen - оно тебе дает тотже шелл но из себя, там можешь запускать что угодно - скрин удержит
закрываешь ssh
открываешь снова
говоришь там screen -r и он тебе вернет твой скрин
ну и само собой man screen ибо там много интересного

WhiteDragon (не проверено)

таки попытался понять цель
man screen на тему multiuser mode
чтобы цепляться от рута к скрину другого юзера
а вообще можешь просто пускать скрин от рута а сервак в нем уже от юзера

cnyx (не проверено)

2 еdge
Это не сервис, это СЕРВЕР, игровой, CS если быть точным. Если его просто запустить, без всяких screen и &, то на экране будет консоль сервера. С чем сравнить то, даже не знаю. Ну допустим как канал в IRC: кто подлкючился, отключился, мессаги разные, варнинги и т.п. + можно выполнить какую-то команду. Но ты запустив его потеряешь shell, активным станет сама консоль сервера игрового. А вот чтобы иметь возможность после запуска игрового сервера работать в шелле и иметь возможность в любой момент зайти в консоль сервера, я использую screen. Допустим зашел в консоль, сделал amx_reloadadmins - перегрузил админов, а дальше там что-то еще тестирую.
2 Vitls
Запущу в фоне, как мне к консоли сервера потом подключиться?
2 WhiteDragon
Кк, сейчас насчет multiuser mode почитаю

edge (не проверено)

Ээх.. лучше б ты ничего не запускал.

WhiteDragon (не проверено)

да кстати не знаю как там у cs но у кваковского движка есть rcon

Luter (не проверено)

ну допустим у КС движка тоже есть ркон...
но не всегда удобно через него работать

RSS-материал