Я недавно установил 12.04.
Когда я пытаюсь отредактировать файл с помощью gedit , я не могу использовать терминал, пока не закрою файл редактирования или мне не придется открыть новый терминал. Но я думаю, что у меня не было этой проблемы с 11.04, однако я не уверен.
Есть ли способ избежать этого и использовать один и тот же терминал при редактировании файлов.
В неотвечающем терминале:
bg
] и введите. disown
и введите. В неотвечающем терминале нажмите Ctrl + Z , это приведет к «приостановить» процесс (или «задание») и вернуть управление консоли вам. Однако вы заметите, что gedit
перестает отвечать, и вы не можете его использовать.
Extra : при желании вы можете выполнить команду
jobs
, вы заметите, что для командыgedit
он будет читать Stopped , поэтому вы не можете его использовать.
Для успешного выполнения задания в фоновом режиме (т.е. чтобы снова сделать gedit
отзывчивым),выполнить команду bg
(имеется в виду фон). Теперь вы сможете использовать gedit
и в то же время иметь подсказку для себя.
Extra : теперь, если вы выполните
jobs
, вы ' Вы заметите, что он будет читать Running .
Вы можете преодолеть все это с самого начала. Когда вы запускаете gedit
из терминала, добавьте &
в конец команды, например, gedit / path / to / file &
. Это запустит gedit
в фоновом режиме с первого места (вам может потребоваться несколько раз нажать Enter , чтобы вернуть управление консоли).
Extra : если бы вы следовали этим дополнительным примечаниям, вы могли заметить, что во второй раз, когда вы выполняли
задания
, вы могли бы увидеть, что bash добавил&
в конецgedit
.
Когда вы привыкнете к этой системе, вы можете заметить, что если вы закроете терминал, gedit также прекратит работу, даже без диалогового окна подтверждения. Чтобы этого не произошло, запустите disown
, который отключит процесс gedit от терминала, удалив его из списка, возвращаемого заданиями
.
Вероятно, это потому, что вы открыли gedit через терминал. Когда вы это сделаете, вы увидите вывод командной строки, который обычно скрыт при запуске через графический интерфейс. Лучший способ исправить это - открыть новое окно терминала. Другой станет доступен после закрытия gedit. Вы также можете использовать переключатель, предложенный вышеупомянутым пользователем.
Просто введите:
gedit FILENAME & disown
Завершение команды с помощью &
в bash запускает эту команду в фоновом режиме. Однако этот процесс по-прежнему привязан к терминалу.
Без Оказалось, что я ошибался, это не относится к bash, но это относится к zsh. Вам все равно нужно запустить disown
, если вы закроете терминал, gedit закроется, даже не предлагая вам сохранить отредактированный файл. disown
отключает фоновый процесс от текущего терминала, так что если вы закроете терминал, gedit продолжит работу в обычном режиме. detach
после выполнения ctrl - z и bg
, хотя даже в bash.
дополнительные сведения о встроенных заданиях
, disown
и метасимволах и
на странице для команды bash
, особенно в разделе «Управление заданиями».
Просто введите:
gedit
Это немедленно вернет вам командную строку.
Вы можете использовать nohup
, чтобы предотвратить присоединение графического интерфейса к терминалу:
nohup mupdf some.pdf &
Это позволит вам закрыть терминал, с которого вы запускаете, без Программа закрывается.
Вы также должны заметить, что команда nohup создаст файл с stdout
и stderr
запущенной вами команды. Если вы хотите предотвратить это, добавьте &> / dev / null
перед &
.
nohup mupdf some.pdf &>/dev/null &
Из man gedit
:
-b, --background Запустите gedit в фоновом режиме.
Итак, если вы запустите gedit
с параметром -b
, он запустится в фоновом режиме:
gedit -b [FILE-NAME]
Кроме того, затем вы можете создать псевдоним для gedit -b
(см. здесь , как создать постоянный псевдоним):
alias gedit='gedit -b'
С этого момента в будущем вы можете использовать gedit [FILE-NAME]
как обычно, и он запустится в фоновом режиме.
Вы также можете использовать команду disown
. Это особенно полезно, когда вы уже запустили процесс, который больше не хотите подключать к терминалу.
Основная процедура, если я правильно помню, выглядит примерно так:
$ > firefox #Oops
Ctrl + z #Suspend the process
$ > bg #Push the process to the background
$ > disown #Detach most recent process started or stopped
$ > exit #Terminal gone!
Обратите внимание, что disown специфичен для bash
.