Запуск программы GUI из терминала Linux предотвращает дальнейшее использование

Я бы поискал это, но я понятия не имею, как это сделать для поисковой системы.

В принципе, когда я запускаю программу gui из окна терминала, этот терминал не может быть использован до тех пор, пока я не выйду из программы. Я только начал использовать dwm, и я не хочу, чтобы бесполезные терминалы засорялись после запуска нескольких графических программ. Есть ли способ обойти это?

  • Ярлык клавиатуры для отображения или снятия с экрана окна в OS X
  • Общие приложения для шаров X?
  • Какой Tyl Window Manager для Windows вы рекомендуете?
  • Какие сочетания клавиш перемещают, изменяют размер и увеличивают окна в Mac OS X?
  • Как вернуться в предыдущее окно на OS X?
  • Есть ли программное обеспечение для определения областей в Windows для вставки в них окон?
  • Как заставить Windows XP привязать окна к рабочему столу, например Vista?
  • 6 Solutions collect form web for “Запуск программы GUI из терминала Linux предотвращает дальнейшее использование”

    Все, кто говорит «&», прав. Если вы случайно забыли, наберите ^ Z (ctrl + Z), чтобы приостановить программу, затем «bg», чтобы сообщить оболочке запустить ее в фоновом режиме. Это оставляет оболочку полностью интерактивной, как если бы вы запустили программу с помощью «&».

    Я понимаю, что это старая нить, но я помню, что нашел более сложное решение, чем перечисленные здесь.

    $ (gui_app &> /dev/null &) 

    «&> / Dev / null» перенаправляет как stdout, так и stderr на нулевое устройство. Последний амперсанд заставляет процесс работать в фоновом режиме. Скобки вокруг команды заставят ваш «gui_app» работать в подоболочке.

    Это приведет к отсоединению процесса «gui_app» с консоли, на которой выполняется эта команда. Таким образом, даже если вы закроете оконный родительский эмулятор терминала, «gui_app» не будет закрыт. Я запустил это, а затем посмотрел на дерево процессов с помощью команды «pstree» и обнаружил, что приложение, запущенное таким образом, станет дочерним процессом для «init».

    Например,

     $ gui_app &> /dev/null & 

    Запустит приложение в фоновом режиме, но он станет дочерним процессом консольного процесса и завершится, когда вы закроете терминал. (Хотя выход из терминала через bash с помощью команды exit или Ctrl-D позволит bash очистить, передав фоновый процесс для init.)

    Кроме того, вы можете использовать «nohup», но по умолчанию перенаправляет вывод и ошибку в файл. Команда «disown» (если доступна в оболочке) может отсоединить процесс от терминала после того, как вы начали фоновый процесс:

     $ gui_app & $ disown 

    (Кстати, все это относится к bash. Я уверен, что другие оболочки имеют другие методы / синтаксис для этого).

    Подобный суперпользователь Q & A – может быть, где я помню некоторые из ответов: … запускать графические программы Linux из командной строки, но отдельно от командной строки?

    Некоторая ссылка: процессы отключения (UNIX Power Tools)

    Если это простой вызов GUI-приложения – без сложных опций и т. Д., Похоже, это хорошая возможность использовать пусковую установку типа gmrun или dmenu (предупреждение: громкое аудио). Привяжите его к комбинации клавиш. Я еще не использовал пусковую установку, но попробовал эти два.

    ПРИМЕЧАНИЕ. CarlF в отчетах о комментариях Приложения GUI, запущенные с помощью метода «gui_app &», не закрываются, когда он выходит из родительского терминала. Я думаю, что мы закрывали терминал по-разному. Я закрывал окно, в котором запускался эмулятор терминала. Думаю, он мог выйти из эмулятора терминала через оболочку (команда exit или Ctrl-D). Я протестировал это и увидел, что выход из bash не останавливает графический интерфейс, который запускается как фоновый процесс терминала, как говорит CarlF. Кажется, bash передает фоновые процессы в init, когда ему дается возможность очистить. Фактически, это должен быть механизм, с помощью которого фоновый процесс, запущенный в подоболочке, передается init.

    Вам нужно запустить приложение в фоновом режиме следующим образом:

     # xeyes & 

    Параметр & указывает, что приложение должно запускаться в фоновом режиме.

    Поместите амперсанд ( & ) после команды, и он поместит его в фоновом режиме, что позволит вам использовать терминал, например:

      Nautilus / home / john & 

    пытаться

     $>FooBargGui & 

    Это скажет оболочке начать процесс / gui FooBarGui в качестве фонового процесса и сразу же вернуться к подсказке.

    Вероятно, вы хотите перенаправить любой вывод из команды в / dev / null, а также заново ее использовать. IIRC:

     command > /dev/null 2>&1 & 

    Когда я использовал Sharp Zaurus PDA под управлением Linux (и, IIRC, я использовал диспетчер окон OpenBox), у меня был файл bash, который я назвал q, для «Очереди его быстро и спокойно». Вы могли бы запустить, скажем:

     q mycommand param1 param2 

    Я считаю, что так работает сценарий:

     #!/bin/bash $@ > /dev/null 2>&1 & 
    Interesting Posts

    Как определить количество физических процессоров под Windows и Linux

    Как заставить Windows 7 создать новый профиль домена с тем же именем, что и существующий?

    Невозможно создать новую папку из любой точки Windows 7

    Скопированный профиль пользователя, теперь получите «невозможно получить доступ к устройствам … соответствующие разрешения» в системных файлах

    Gparted не может изменять размер расширенного или LVM-раздела

    Covenience / Cost / Ожидаемая продолжительность жизни носителей информации

    Принуждение разрешения на компьютере без монитора

    Где мое дисковое пространство?

    Как устранить ошибку «Excel нашел нечитаемый контент в (filename)»?

    Обновления, нарушающие Windows Embedded Standard 7 в DISM

    Скрипт для открытия 12 окон браузера в 12 различных мониторах

    Какой протокол использует TeamViewer?

    Как загрузить Google Doodle для использования в автономном режиме?

    Пакетное преобразование документов Word в PDF-файлы

    Какова наилучшая позиция для блока питания?

    Давайте будем гением компьютера.