Я пытался отправить команды на сеанс работы экрана GNU (4.00.03) в opensolaris, но не могу заставить его запускать какие-либо команды с помощью любой комбинации screen -X
Хорошо, я начал сеанс экрана с screen -S test, а затем попытался с помощью, screen -r -X "date"чтобы просто показать мне дату, когда я снова подключусь к нему. Но ни сообщения об ошибке, ни вывода на экран не произошло. Я пробовал с таким количеством комбинаций, что даже не помню.
Любые советы о том, как это сделать?
Причина, по которой я это делаю, заключается в том, что у меня есть программа, которая не является демоном, и я хочу запустить ее в сеансе экрана, чтобы позже я смог увидеть, что происходит.
кажется, как будто эта «команда», о которой они говорят на страницах руководства, предназначена для экранной команды, такой как настройки самого сеанса экрана. Вместо отправки команд для оболочки, которая открывается в сеансе экрана. Итак, кто-нибудь идея, как сделать это с помощью сценария Bash ??
14 лет назад
0
@Axon: Да, -X отправляет команды экрана, а не команды оболочки, но на экране есть команда 'screen', которая может открывать новые окна экрана.
14 лет назад
0
3 ответа на вопрос
17
thegatekeeper
На самом деле все довольно просто. Вы можете использовать следующее:
Не могли бы вы уточнить, что представляет собой «материал»? Это имя ... или команда ... или другие параметры?
Cerin 12 лет назад
0
На самом деле это работает, но я бы не сказал, что это так или иначе;) Это что-то вроде передачи нажатых клавиш и перехода на новую строку на экране. Разве нет обычной команды выполнения экрана ...?
ducin 11 лет назад
0
@Cecin: `stuff` - это экранная команда для« вставки »строки в стандартный ввод
konrad 11 лет назад
0
Это очень хорошо, но по какой-то причине не работает с "screen -RdS sessionname -X stuff 'ls -l'`echo -ne' \ 015'`", почему?
e271p314 10 лет назад
0
это не работает, если я не запускаю команду дважды ... и в отдельных командных строках ... если я выполняю `screen -d -m -S sessionname; screen -S sessionname -X [...] `ничего не будет работать даже` (screen -d -m -S sessionname &) & sleep 10; screen -S sessionname -X [...] `ничего не делает, кроме создания нового экрана сеанс, который ничего не делает. вниз голосования
user3338098 8 лет назад
0
это не работает для меня ... не эмулирует клавишу ввода ...
Tanner Strunk 6 лет назад
0
4
Звучит так, как вы хотите:
$ screen -S test -d -m -c / dev / null - sh -c 'date; exec $ SHELL ' -S тест: назовите этот сеанс -d -m: стартовый экран отключен -c / dev / null: игнорировать ~ / .screenrc (укажите другой файл или удалите эту опцию, по мере необходимости) -: конец экрана sh-c 'дата; exec $ SHELL ': команда для запуска экрана, обратите внимание, что если эта команда было просто «дата», то экран немедленно закрылся. если вы не хотите выходить После выхода из команды, вы можете использовать: $ screen -S test -d -m -c / dev / null - ваша команда здесь
Откройте новое окно (с заголовком заголовка ) в существующем сеансе с именем session_name и выполните shell_command (с необязательными аргументами args )