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

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

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

  • Найти повторяющиеся слова в тексте
  • Как найти время работы в Windows?
  • Конфигурация RAID «просматривается» через
  • Есть ли способ скопировать текст в htop?
  • Linux Mint не загружается после запуска команды «rm», которая должна была настроить раздел подкачки
  • Преобразование CRLF в линейные каналы в Linux
  • Как найти имя / dev моего устройства USB
  • Хороший размер блока для клонирования диска с помощью diskdump (dd)
  • Как запустить Firefox в тюрьму без серьезной потери производительности?
  • Неизвестный процесс linux со случайной командой
  • Интерпретация количества головок, возвращаемых fdisk
  • Загрузка нескольких файлов с параметрами wget и обработки
  • 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 & 
    Давайте будем гением компьютера.