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

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

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

1
задан splicer
09.11.2022 7:40 Количество просмотров материала 3243
Распечатать страницу

6 ответов

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

10
отвечен CarlF 2022-11-10 15:28

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

$ (gui_app &> /dev/null &)

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

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

например,

$ gui_app &> /dev/null &

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

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

$ gui_app &
$ disown

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

подобный суперпользователь Q&A-может быть, где я помню некоторые из ответы от:... запустите программы GUI linux из командной строки, но отдельно от командной строки?

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

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

Примечание: CarlF в комментариях сообщает GUI приложений, запущенных с помощью" gui_app & " метод не закрывается, когда он выходит из родительского терминала. Я думаю, что мы закрывали терминал по-разному. Я закрывал окно, в котором работал эмулятор терминала. Я думаю, что он, возможно, выходил из эмулятора терминала через оболочку (команда exit или Ctrl-D). Я проверил это и увидел, что выход через bash не останавливает графический интерфейс, запущенный как фоновый процесс терминала, как CarlF говорит. Похоже, Баш руки от фоновых процессов в init, когда дается шанс очистить. По сути, это должен быть механизм, с помощью которого фоновый процесс запускается в случае, когда выдачи инит.

5
отвечен EMPraptor 2022-11-10 17:45

вам нужно, чтобы запустить приложение в фоновом режиме, как это:

# xeyes &

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

3
отвечен djhowell 2022-11-10 20:02

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

nautilus /home/john&
1
отвечен John T 2022-11-10 22:19

try

$>FooBargGui &

это скажет оболочке запустить процесс / gui FooBarGui как фоновый процесс и немедленно вернуться к приглашению.

0
отвечен lexu 2022-11-11 00:36

вы, вероятно, хотите перенаправить любой вывод из команды в /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 &
0
отвечен Clinton Blackmore 2022-11-11 02:53

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх