2015-02-27 2 views
0

У меня есть следующий Баш файл, который должен создать экран, перейдите в каталог, а затем запустить скрипт узла:Run в экране после создания одной на баш

screen -S shared  // 1 
cd /home/nodejsapp // 2 
node start.js app.js // 3 

Проблема заключается в том, после выполнения 1, Я действительно вижу экран «общий», но 2 & 3 будет выполняться на предыдущем терминале, а не на экране «общий».

Как я могу добиться выполнения команд 2 и 3 на текущем экране?

ответ

3

Вы можете создать экран detached, а затем отправить ему команды. Например:

screen -d -m -S shared 
screen -S shared -X -p 0 stuff $'cd /home/nodejsapp\n' 
screen -S shared -X -p 0 stuff $'node start.js app.js\n' 

Если вам необходимо приложить к сессии screen после этого, то вы можете добавить еще одну строку:

screen -S shared -r 

руководство См screen «s для более подробной информации:

0

Вы можете запустить «сервер» в качестве программы на экране, которая считывает команды для выполнения из псевдотерминала, который идентифицирует программа «tty». Например, как я пишу это, терминал говорит (внутри экрана)

/dev/pts/2 

и я могу написать ему

date >/dev/pts/2 

На стороне сервера, скрипт будет читать строки в каждом конкретном линии в цикле с того же устройства. (В некоторых других системах на каждой стороне псевдотерминала есть устройства с по-разному названными ).

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

Это можно сделать только с помощью нескольких сценариев оболочки (немного более продолжительный, чем обычный ответ здесь).

Смежные вопросы