Помогите пожалуйста с такой дилеммой. На сервере в screen запущен диалоговый процесс. Иногда (весьма редко) нужно передать процессу команду, а логиниться по ssh из-за одной команды лень. Собственно передать команду процессу просто, через screen -X. А как можно получить ответ? Все это в идеале нужно прикрутить к perl/php, но это я уже сам сделаю.
P.S. Гуглил 2 дня, но слово screen не очень поддается поиску — в связке со словами output, file, php, perl, bash обычно выдает результаты об stdout.
P.S.S. Повторюсь, команду нужно передать процессу в screen. Не в систему.
Вам screen вообще не нужен. Создайте по пайпу (mkpipe) и переведите туда stdin и stdout. Собственно, к ним можно невозбранно подключаться и читать/писать.
А можно чуть конкретнее? Я знаю как сделать stdout по пайпу, и то не именованному. А как Сделать в него stdin? Как сделать detach/attach для терминала? На счет последнего: я так понял через tail, но я не уверен.
mkpipe создаёт псевдофайл. Перенаправлять в него вывод можно через >, ввод из него читать через <. Для гарантированного отцепления можно использовать утилиту daemon.
Боюсь с пайпом может не получиться. Он же работает по принципу fifo, но «чтение» пайпа будет идти на с максимально возможной скоростью. Разве что ядро будет выбрасывать строки при переполнении, но тогда будет проблема с F5 и php — часть лога будет теряться. Впрочем, все равно прочитал про сабж, узнал кое-что новое для себя.
Спасибо! Я, собственно, тоже туплю в сторону игрового сервера. Все-таки через steam overlay полегче будет бросать команды, чем через ssh во время игры, да и вне ее тоже. А rcon, по неясной мне причине, не работает.
А просто exec($cmd); не сработает? Просто я планирую сделать асинхронную передачу, чтобы яваскриптом обновлять страницу, и получать «обновления», и каждый раз запускать ssh… хотя впринципе не принципиально.
Черт, у вас еще и ник, почти как у меня в миру :) Может, соберемся где-нибудь в жабере или скайпе да пообсуждаем некоторые технические вопросы, опытом поделимся там?