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

У меня есть следующий код для выполнения некоторых команд на экране 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

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 

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

  • Работа Wi-Fi вкл. И выкл., В основном с ноутбука HP, - две
  • Проблема с подключением Beagleboard через последовательный порт?
  • могу ли я использовать папку udev для копирования моих файлов, чтобы я мог освободить свой / dev / sda1
  • Как использовать grep, когда файл не содержит строку
  • Установите Ubuntu поверх Suse без ущерба для Windows
  • Сканирование Nmap для устройств с поддержкой SNMP
  • Как пройти мимо спасения личинки?
  • Невозможно использовать ключи мультимедиа Google Play Music 14.04?
  • Откат всех пакетов apt-get до максимума, доступных под фактическим sources.list
  • sudo и fish: нет кэширования учетных данных
  • Как создать виртуальную систему для остановки / запуска нескольких экземпляров вместе?
  • Linux и Unix - лучшая ОС в мире.