Отправить команду в уже запущенный сеанс экрана

Я пытался отправить команды на сеанс работы экрана GNU (4.00.03) в opensolaris, но не могу заставить его запускать какие-либо команды с помощью любой комбинации screen -X

Хорошо, я начинаю сеанс экрана с screen -S test, а затем попытался с screen -r -X "date"просто чтобы показать мне дату, когда я снова подключусь к ней. Но ни сообщения об ошибке, ни вывода на экран не произошло. Я пробовал с таким количеством комбинаций, что даже не помню.

Любые советы о том, как это сделать?

Причина, по которой я это делаю, заключается в том, что у меня есть программа, которая не является демоном, и я хочу запустить ее в сеансе экрана, чтобы позже я смог увидеть, что происходит.

4 ответа

На самом деле это довольно просто. Вы можете использовать следующее:

screen -S sessionname -X stuff 'command'`echo -ne '\015'`

echo -ne '\015' эмулирует нажатие клавиши Enter.

ПРИМЕЧАНИЕ: этот "материал" является экранной командой. http://www.gnu.org/software/screen/manual/screen.html

Звучит так, как вы хотите:

$ 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 - ваша команда здесь

Или, может быть, вы просто хотите dtach.

screen -S <session_name> -X screen [-t <title>] <shell_command> [<args>]

Откройте новое окно (с заголовком заголовка) в существующем сеансе с именем session_name и выполните shell_command (с необязательными аргументами args)

Как и некоторые комментарии здесь, мне также сначала не удалось заставить эту команду работать на Ubuntu Server 22.04. Вот что на самом деле сработало для меня:

      screen -S <sessionName> -p 0 -X stuff 'command^M'

The -p 0что сделало это, чтобы выбрать первое окно, несмотря наstuffкоманда, утверждающая, что она работает с «текущим окном», а^Mбыла более хорошей альтернативной формойecho -ne '\015'.

Откуда: https://raymii.org/s/snippets/Sending_commands_or_input_to_a_screen_session.html

Другие вопросы по тегам