Отправить команду в уже запущенный сеанс экрана
Я пытался отправить команды на сеанс работы экрана 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