LINUX.ORG.RU
ФорумAdmin

screen -X


0

2

Прочитал в мануале по screen что данная команда позволяет отправить в строку в виртуальный терминал не подключаясь к нему.

[minecraft@lan_server ~]$ screen -ls
There is a screen on:
	16570.mine	(Detached)
1 Socket in /home/minecraft/tmp/screen.

[minecraft@lan_server ~]$ screen -X 16570.mine /list

И никакого эффекта внутри сессии mine

Кажется я ошибся. Попробовал погуглить примеры, не нашёл. чём ошибка?

Э нет, мой маленький мохнатый друг, так не пойдёт.
Давай-ка говори, какая на самом деле задача стоит, вместо описания своих фантазий

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

Нужно что бы другое приложение могло послать произвольную команду на консоль minecraft. (запущенного в screen сессии)

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

Отправлять нужно команду screen, а не команду твоего сервера! Чтобы уже скрин выдал твою строчку это, кажись stuff делает.

anonymous
()
Ответ на: комментарий от zolden
screen -S screenname -p 0 -X exec yourcommand

Как я понял это создаст screen сессию и запустит на ней программу.

Так нужно на вход уже запущенной программы подавать команды.

rezedent12 ☆☆☆
() автор топика
Ответ на: комментарий от rezedent12
screen -X stuff test

И у меня на консоли в сессии screen появляется test. Как посылать конец строки оставляю тебе в качестве домашнего задания.

anonymous
()
Ответ на: комментарий от rezedent12

ну ты попробовал бы хоть сначала... upd хотя screen -x blablabla тоже вроде работает

zolden ★★★★★
()
Последнее исправление: zolden (всего исправлений: 1)
Ответ на: комментарий от anonymous
screen -X stuff test

Интересная секретная опция которая не описана в мануале. Я вот только не понял как она определяет что ей надо подключаться именно к нужной сессии?

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

У меня просто одна сессия. А вообще -S, да.

А про команды лучше info смотри. Там больше написано. И это не только screen'а касается.

anonymous
()
Ответ на: комментарий от rezedent12

Отправлять нужно команду screen

Зачем? minecraft уже запущен. Зачем его ещё раз запускать?

Действительно двусмысленно получилось. Тебе надо отправить screen'у его команду (например stuff), чтобы он, в свою очередь, отправил команду твоему приложению. Уже запущенному, да.

anonymous
()

Помнится мне держал я игровой сервер использовал php скрипт для команд...

#!/usr/bin/php
<?
$command = 'info';
$screenName = 'wow';
$com = `screen -S '$screenName' -X stuff '$command\r'`;
?>

Чтобы из баша послать нужно использовать вместо \r ESC последовательность нажатия клавиши Enter...

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

Я уже придумал по другому

 mkfifo input 

#!/bin/sh
cat input | java -Xmx512M -Xms512M -jar minecraft_server.jar nogui &
cat > input

В результате сохраняется как интерактивный ввод данных, так и возможность выполнения команд посылая их в input

echo "/ban player" > input

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