screen - проблема посылки команд.

Простые/общие вопросы по UNIX системам. Спросите здесь, если вы новичок

Модераторы: vadim64, terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
RayTraceR
проходил мимо
Сообщения: 9
Зарегистрирован: 2010-08-23 14:53:23
Контактная информация:

screen - проблема посылки команд.

Непрочитанное сообщение RayTraceR » 2010-08-24 12:27:33

Доброго времени суток уважаемые форумчане!
Собственно проблема:
ОС: FreeBSD 7.2
Версия screen 4.0.3

Есть некоторый консольный сервер, запускаемый из .sh файла. При запуске такового, есть доступ к консоли для введения простых команд, таких как quit и restart.
Есть веб сервер, с php и с установленно библиотекой для работы с SSH2 протоколом. Задача, чтобы запустить консольный сервер в фоне и иметь возможность ввода команд я запускаю его через screen. Вот содержание(manage.sh):

Код: Выделить всё

#!/bin/sh
#vsftpd &

if [ ${1} = "start" ]
then
cd /home/raytracer/server/
/usr/local/bin/screen -A -m -d -S sess ./server_run -verbose
elif [ ${1} = "stop" ]
then
/usr/local/bin/screen -rd sess -X eval 'stuff quit\015'
elif [ ${1} = "restart" ]
then
/usr/local/bin/screen -rd sess -X eval 'stuff restart\015'
else
action="Unknown action"
fi
Тоесть я через вебсервер посылаю команду из php скрипта для запуска сервера:
$cmd = $ssh->exec('/home/raytracer/server/manage.sh start');
Сервер запускается в фоне, сессия скрина sess создается и детачится. Все норм.

Далее я хочу перезагрузить сервер и посылаю команду:
$cmd = $ssh->exec('/home/raytracer/server/manage.sh restart');
тоесть в скрипте исполняется строчка:
/usr/local/bin/screen -rd sess -X eval 'stuff restart\015'
она означает отдетачиться от остальныйх окон и вернуться в сессию скрина sess и затем отослать команду restart и послать нажатие клавиши Enter символом \015. Но сервер не перезапускается - 0 реакции.

НО! Как только я в tty или же через виндосовский ssh клиент pytty отсылаю команду: screen -rd sess
тоесть отдетачиться от остальныйх окон и вернуться в сессию скрина sess, и затем отключаюсь от сессии (ctrl+A +d) и посылаю через вебсервер команду:
$cmd = $ssh->exec('/home/raytracer/server/manage.sh restart');
Сразу происходит перезапуск сервера. Тоесть необходимо 1 раз присоединиться к сессию, затем все идет нормально, но как сэмулировать запуск через вебсервер.
Пробовал посылать команду, которую мне посоветовал один из участников форума - hizel:
screen -rd sess && /home/raytracer/server/manage.sh restart
Ничего не выходит. Как можно найти решение?

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

masterito
рядовой
Сообщения: 42
Зарегистрирован: 2010-08-19 16:24:17
Откуда: Санкт-Петербург

Re: screen - проблема посылки команд.

Непрочитанное сообщение masterito » 2010-08-24 12:59:14

А зачем вам вообще скрин? Чем не устраивает такой вариант:

Код: Выделить всё

cd /home/raytracer/server/ && ./server_run -verbose &
?

Аватара пользователя
RayTraceR
проходил мимо
Сообщения: 9
Зарегистрирован: 2010-08-23 14:53:23
Контактная информация:

Re: screen - проблема посылки команд.

Непрочитанное сообщение RayTraceR » 2010-08-24 13:06:21

masterito писал(а):А зачем вам вообще скрин? Чем не устраивает такой вариант:

Код: Выделить всё

cd /home/raytracer/server/ && ./server_run -verbose &
?
С таким вариантом страница с результатом выполнения php скрипты просто навсего зависает, сервер не запускает, php виснет тоже - так как запуск сервера происходит не в фоне. Но даже если я в эту строку добавлю (тоесть в фоне запущу)

Код: Выделить всё

> /dev/null 2>&1 &
Каким образом я пошлю в консоль сервера команду?

Аватара пользователя
hizel
дядя поня
Сообщения: 9031
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: screen - проблема посылки команд.

Непрочитанное сообщение hizel » 2010-08-24 13:10:50

в далекие CS времена помнится мы баловались убивая на соседних кантуперах CS через удаленную консоль
сейчас такого нет?
а сервер можно запустить через daemon
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

Аватара пользователя
RayTraceR
проходил мимо
Сообщения: 9
Зарегистрирован: 2010-08-23 14:53:23
Контактная информация:

Re: screen - проблема посылки команд.

Непрочитанное сообщение RayTraceR » 2010-08-24 13:32:18

hizel писал(а):в далекие CS времена помнится мы баловались убивая на соседних кантуперах CS через удаленную консоль
сейчас такого нет?
а сервер можно запустить через daemon
Хмм допусти есть процесса pid как я могу отослать команду даемону?

Аватара пользователя
hizel
дядя поня
Сообщения: 9031
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: screen - проблема посылки команд.

Непрочитанное сообщение hizel » 2010-08-24 14:25:51

насколько я понимаю там отдавались команды через игровой сокет
--
а остоновку сделать через kill
Последний раз редактировалось hizel 2010-08-24 14:28:13, всего редактировалось 1 раз.
Причина: казнить нелдьтзя помиловать
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

Аватара пользователя
RayTraceR
проходил мимо
Сообщения: 9
Зарегистрирован: 2010-08-23 14:53:23
Контактная информация:

Re: screen - проблема посылки команд.

Непрочитанное сообщение RayTraceR » 2010-08-24 18:00:09

hizel писал(а):насколько я понимаю там отдавались команды через игровой сокет
--
а остоновку сделать через kill
Ели можно - поподробнее. А остановка не интересует.

Аватара пользователя
hizel
дядя поня
Сообщения: 9031
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: screen - проблема посылки команд.

Непрочитанное сообщение hizel » 2010-08-24 18:04:51

в CS есть консоль в игре? вот та же консоль удаленная
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

Аватара пользователя
RayTraceR
проходил мимо
Сообщения: 9
Зарегистрирован: 2010-08-23 14:53:23
Контактная информация:

Re: screen - проблема посылки команд.

Непрочитанное сообщение RayTraceR » 2010-08-24 18:34:53

Нет протокол Rcon исключен. Нужно только через стандартную консоль.

Аватара пользователя
hedgehog
сержант
Сообщения: 220
Зарегистрирован: 2010-01-26 11:47:05
Откуда: Kharkiv, Ukraine
Контактная информация:

Re: screen - проблема посылки команд.

Непрочитанное сообщение hedgehog » 2010-08-24 23:21:45

RayTraceR писал(а):Нет протокол Rcon исключен. Нужно только через стандартную консоль.
а почему исключен, если не секрет?
тот же amxbans с вебморды через сокеты, кажется, отправляет status и прочую ерунду в консоль. удаленно.

Аватара пользователя
RayTraceR
проходил мимо
Сообщения: 9
Зарегистрирован: 2010-08-23 14:53:23
Контактная информация:

Re: screen - проблема посылки команд.

Непрочитанное сообщение RayTraceR » 2010-08-25 9:41:54

hedgehog писал(а):а почему исключен, если не секрет?
тот же amxbans с вебморды через сокеты, кажется, отправляет status и прочую ерунду в консоль. удаленно.
Нужна работа напрямую. amxbans также работает через ркон.

Аватара пользователя
RayTraceR
проходил мимо
Сообщения: 9
Зарегистрирован: 2010-08-23 14:53:23
Контактная информация:

Re: screen - проблема посылки команд.

Непрочитанное сообщение RayTraceR » 2010-08-25 13:55:23

Все - неактуально - тему можно закрыть