LINUX.ORG.RU

Обратная связь из Screen.

 , ,


0

1

Добрый вечер.
В screen запущен игровой сервер (консоль). Лог ведется в файл.
Возникла потребность отлавливать события в игровом чате, консоли. Скажем, игрок вводит команду-триггер, например «админ мудак», а я ему в ответ отправляю команду.
Мои мысли - мониторить Cron-ом файл лога, при обнаружении триггера запоминая дату сообщения, чтобы не реагировать на одно и то же сообщение.
Однако я не уверен, что оправдано такое частое использование планировщика - скажем, секунд 5.
Плюс наверняка есть другой способ.
Просто я не сисадмин и не кодер, вот, набираюсь у вас опыта, дяди. Заранее спасибо и доброй ночи!



Последнее исправление: konvkosmose (всего исправлений: 2)

Ответ на: комментарий от legolegs

Спасибо! Т.е. что-то вроде: запустить в параллельном цикле вывод этой команды в переменную, и она будет при обновлении файла - обновлять переменную?

konvkosmose
() автор топика
Ответ на: комментарий от legolegs

А если выкинуть tail вообще (скажем, начинать с пустого лога), то и с переменной line можно делать всё что угодно после «done» :)

vodz ★★★★★
()
Ответ на: комментарий от vodz

Хм, это я еще разберу в таком случае... Скажите пожалуйста, а как за такими процессами лучше следить и запускать их параллельно сессии? Ну, т.е. я вхожу на сервер пользователем. У меня есть этот screen c процессом. Мне нужно свой скрипт с tail и прочим - запустить в отдельном screen?

konvkosmose
() автор топика
Ответ на: комментарий от konvkosmose

screen — это для людей. Для что-то делающих программ, которые должны не отваливаться после из запуска и разлогиневания пользователя применяется специальные мероприятия, которые называются в кальке с английского «стать демоном» (по-русски это будет какой-то «демономизацией», что вряд ли хорошее ключевое слово для поиска информации).

vodz ★★★★★
()
Последнее исправление: vodz (всего исправлений: 1)
Ответ на: комментарий от vodz

Спасибо. А нужно ли создавать pid-файл, если других копий скрипта не будет? Сейчас создаю без него,

start-stop-daemon -Sbvx /home/jur/Desktop/script.sh
Starting /home/jur/Desktop/script.sh...
Detaching to start /home/jur/Desktop/script.sh...done.
,но потом не могу убить демон
jur@ubuntu:~/Desktop$ start-stop-daemon -K -x /home/jur/Desktop/script.sh
No /home/jur/Desktop/script.sh found running; none killed.
Как начинающий колдун какой-то. Вызвал - убить не могу.

konvkosmose
() автор топика
Ответ на: комментарий от vodz

Почему-то создаются два процесса, один из которых прописан в файле pid. А второй приходится убивать вручну.

konvkosmose
() автор топика
Ответ на: комментарий от konvkosmose

Нашел, убиваются по

start-stop-daemon -K --name
Но почему их два, так и не понял.

konvkosmose
() автор топика
Ответ на: комментарий от vodz

Обрабатывать события лога по *мере поступления* проще таки через tail -f. Даже лучше, чем через фифо т.к. обработчик не блокирует демона. Или я не понял вашу мысль.

legolegs ★★★★★
()

Можно лог fail2ban'ом обрабатывать.

ptah_alexs ★★★★★
()
Ответ на: комментарий от legolegs

Обрабатывать события лога по *мере поступления* проще таки через tail -f.

Я так думаю, что это проще только для демона на bash, который больше ничего не делает, кроме как в цикле ожидает и выполняет действие. Во всех остальных случаях как не крути что-то не получается что-то осмысленное. Скажем если этот цикл засунуть в фоновый процесс, то получим тоже самое, что и до скрипта: некий блокируемый процесс ожидает пополнение лога, то есть круг замкнулся.

Или я не понял вашу мысль.

Ну изначально автор хотел раз в 5 секунд проверять, может он подвисать и не хотел вовсе?

vodz ★★★★★
()
Последнее исправление: vodz (всего исправлений: 1)
Ответ на: комментарий от vodz

Насчет 5 секунд - это лишь догадки, так как я не знал про способ с ожиданием. Очень интересно получается, много возможностей... Есть некоторые проблемы, если надо скриптом отправить что-то в консоль и тут же отследить им же ответ сервера - но это я сам поковыряюсь. В общем, большое спасибо! Если будет по этой теме что-то, напишу тут же...

konvkosmose
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.