Не удается запустить код на экране

У меня есть следующий код для выполнения некоторых команд на экране virtue:

screen -R << EOF cd /home/users/devops_tester/apps/Selenium-Webdriver export DISPLAY=:99 npm start EOF 

Это дает мне ошибку:

 Must be connected to a terminal. 

Как я могу это решить?

Я нашел эти связанные темы, но я не использую ssh:

Как запустить сеанс экрана с помощью команды поверх ssh на удаленном сервере с моего рабочего стола?

Это приложение экрана:

https://packages.ubuntu.com/trusty/screen

  • Программы Gnome (eog / gnome-terminal) медленно запускаются и вызывают предупреждение DBus.Error.NoReply
  • Удалите значок уведомлений или сделайте уведомления затухающими через некоторое время
  • Как переключить блокировку esc и caps с помощью gsettings / gconftool-2 в ubuntu 14.04?
  • Два cronjobs не работают (один для запуска процесса, один для остановки процесса)
  • Ubuntu Linux: копирование прав на файлы / папки с одной машины на другую
  • Аудиовыключение и выход после обновления с Ubuntu 12.10 -> 13.10
  • Как показать сетевые адаптеры со своей статистикой?
  • Графика нечеткая в Ubuntu 12.10
  • One Solution collect form web for “Не удается запустить код на экране”

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

    Другая проблема заключается в том, что как только вы используете перенаправление ввода через << __EOF__ вызываемая программа запускается без tty , то есть без интерактивного терминала. Это легко продемонстрировать здесь:

     $ tty /dev/pts/0 $ tty << __EOF__ __EOF__ not a tty 

    К счастью для вас screen имеет поддержку для запуска пользовательских команд при запуске. Это так же просто, как screen command args (обратите внимание на отсутствие -R после экрана).

    В вашем случае вам придется передать все свои команды в качестве аргументов /bin/sh потому что экран не будет запускать для вас несколько команд оболочки. Что-то вроде этого должно работать:

     $ screen /bin/sh -cx "cd /home/users/devops_tester/apps/Selenium-Webdriver; export DISPLAY=:99; npm start" 

    Это вызовет новый сеанс экрана и запустит ваши команды. -x делает оболочку печатать команды, которые она запускает для вашей справки. Это необязательно, вы можете удалить его.

    Вы также можете запустить вышеуказанное в сеансе сеанса с немедленным отключением и снова подключиться к нему:

     $ screen -d -m /bin/sh -cx "cd /home/...; export ...; npm start" # runs the commands in screen but returns immediately 

    Это полезно, если вы хотите, например, запускать команды во время запуска системы.

    И, конечно же, вы можете снова присоединить вышеуказанный сеанс, чтобы посмотреть, что там происходит.

     $ screen -R # re-attach to the above screen session 

    И последнее, но не менее важное – вместо передачи всех ваших команд в качестве аргументов в /bin/sh может быть проще создать небольшой скрипт оболочки с тремя строками, сделать его исполняемым и запустить с помощью простого вызова:

     $ screen /path/to/the-script 

    Надеюсь, это поможет 🙂

    Interesting Posts

    Изменяет ли gnome-терминал PATH при вызове оболочки

    Почему правило iptable не может быть указано?

    Настроить способ добавления stderr в файл

    Emacs, как интерпретировать этот отчет отладчика Lisp

    Установите максимальный объем в Arch Linux

    Условие скрипта Bash всегда передается, даже когда grep не должен возвращать ничего

    man pages: значение «2» в STAT (2)?

    Попытка «обратного прокси» запрашивать IP-адрес VPS на внутренний сервер через OpenVPN, как автоматически выполнять таблицы маршрутизации?

    используя awk для подмножества файла fastq на основе длины последовательности

    Как я могу получить количество файлов в каталоге с помощью командной строки?

    Единый каталог только для чтения

    Могут ли возможности быть указаны в пакетах Debian?

    Загрузка Gnome и Cinnamon только в резервном (классическом) режиме

    Возвращать длинное целочисленное значение из функции в ksh

    Случайные части древнего оборудования, не работающего вместе (Mac G5, сетевой адаптер Sun)

    Linux и Unix - лучшая ОС в мире.