Я не могу использовать терминал во время работы команды gedit

Я недавно установил 12.04.
Когда я пытаюсь отредактировать файл с помощью gedit , я не могу использовать терминал, пока не закрою файл редактирования или мне не придется открыть новый терминал. Но я думаю, что у меня не было этой проблемы с 11.04, однако я не уверен.
Есть ли способ избежать этого и использовать один и тот же терминал при редактировании файлов.

44
задан 15.05.2020, 04:06

7 ответов

Короткий ответ

В терминале, который не отвечает:

  1. Нажмите Ctrl + Z .
  2. Введите bg и введите.
  3. Введите disown и введите.

Длинный ответ

В не отвечающем терминале нажмите Ctrl + Z , это «приостановит» процесс (или «задание») ) и верните пульт управления вам. Однако вы заметите, что gedit перестает отвечать на запросы, и вы не можете его использовать.

Дополнительно : если вы захотите, вы можете выполнить команду jobs, вы заметите, что она будет читать Остановлено для команды gedit вот почему вы не можете его использовать.

Чтобы успешно выполнить задание в фоновом режиме (т. е. снова сделать gedit отзывчивым), выполните команду bg (имеется в виду фон). Теперь вы сможете использовать gedit и в то же время иметь подсказку для себя.

Дополнительно : теперь, если вы выполните jobs, вы заметите, что он будет читать Running .

Вы можете преодолеть все это с самого начала. Когда вы запускаете gedit из терминала, добавьте & в конец команды, так что-то вроде этого gedit /path/to/file &. Это сначала запустит gedit в фоновом режиме (вам может понадобиться нажать Enter пару раз, чтобы вернуть управление консоли).

Extra : если вы следили за этими дополнительными заметками, вы могли заметить, что во второй раз, когда вы сделали jobs, вы могли видеть, что bash добавил & в конец команда gedit.

Как только вы привыкнете к этой системе, вы можете заметить, что если вы закроете терминал, gedit также прекратит работу даже без диалогового окна подтверждения. Чтобы этого не происходило, запустите disown, который отсоединит процесс gedit от терминала, удалив его из списка, возвращенного jobs.

80
ответ дан 15.05.2020, 04:10
  • 1
    @detly читают часть " можно преодолеть..." снова! – Witold Skibniewski 15.05.2020, 04:11
  • 2
    @guntbert - Doesn' t помогают, если процесс уже работает... – Markus Rautopuro 15.05.2020, 04:11
  • 3
    It' s всегда удивлял меня, что нет никакого пути к сразу фону процесса that' s работающий на переднем плане. Вы имеете для приостановки его сначала, который иногда isn' t жизнеспособный. – Markus Rautopuro 15.05.2020, 04:12

Просто введите:

gedit <filename-to-edit> &

Это немедленно вернет вам командную строку.

44
ответ дан 15.05.2020, 04:06
  • 1
    @JonKiparsky Забавный пример - действительно высказывает мнение. – Bluenuance 15.05.2020, 04:07
  • 2
    Это - важная идиома Unix, и стоящий знания. Любая команда может быть выполнена в фоновом режиме этот путь. Инструменты, которые являются интерактивными, очевидно, будут перепутаны этой обработкой, но например bubblesort % war_and_peace.txt позволит Вашему сортировщику проворачивать далеко в шедевре (в течение долгого, долгого времени), в то время как Вы продолжаете свою работу (скажите, реализовав quicksort или что-то), – Lukasz Szozda 15.05.2020, 04:07

Это, вероятно, потому что вы открыли gedit через терминал. Когда вы делаете это, вы видите вывод командной строки, который обычно скрыт, если запущен через графический интерфейс. Лучший способ исправить это - открыть новое окно терминала. Другой станет доступным после закрытия Gedit. Вы также можете использовать переключатель, предложенный вышеупомянутым пользователем.

0
ответ дан 15.05.2020, 04:07
  • 1
    Новое окно терминала просто создает помехи рабочему столу, даже если it' s минимизированный. Используя & с или без отрицают, является намного более простым и более чистым. – marc_s 15.05.2020, 04:07

Просто введите:

gedit FILENAME & disown

Завершение команды с помощью & в bash запускает эту команду в фоновом режиме. Однако этот процесс все еще подключен к терминалу.

Без disown, если вы закроете терминал, gedit закроется, даже не предложив вам сохранить отредактированный файл. disown отсоединяет фоновый процесс от текущего терминала, так что если вы закроете терминал, gedit продолжит работать в обычном режиме. Оказывается, я ошибался, это не относится к bash, но это чехол для зш. Вам все еще нужно запустить detach после выполнения ctrl - z и bg, даже в bash.

Вы можете узнать больше о встроенных модулях jobs, disown и метасимволе & в справочной странице для команды bash Manpage icon особенно раздел «Управление заданиями».

10
ответ дан 15.05.2020, 04:08
  • 1
    с disown я смог сохранить gedit открытым после терминала закрытый. Я didn' t получают то, что Вы сказали о " дело обстоит не так для удара, но это имеет место для zsh" – Jeb 15.05.2020, 04:08

Вы также можете использовать команду 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!

Обратите внимание, что отречение относится к bash.

Этот пост в блоге объясняет оба метода довольно хорошо.

Справочная страница по отречению

19
ответ дан 15.05.2020, 04:08

Из man gedit:

-b, --background
         Run gedit in the background.

Таким образом, если вы запустите gedit с опцией -b, он запустится в фоновом режиме:

gedit -b [FILE-NAME]

Более того, затем вы можете создать псевдоним для gedit -b (см. здесь , как создать постоянный псевдоним):

alias gedit='gedit -b'

Отныне, в будущем вы можете использовать gedit [FILE-NAME] как обычно, и это начнется в фоновом режиме.

13
ответ дан 15.05.2020, 04:09
  • 1
    It' s плохая идея использовать псевдоним для переопределения общих команд. You' ll находят много потоков об этом на stackexchange. Хорошо использовать псевдоним с другим именем. Короче говоря искажение существующих команд создает неожиданное поведение на Вашей машине, если кто-то еще когда-нибудь использует его (как при попытке помочь Вам решить некоторую другую проблему), и это делает то же самое Вам при использовании другой системы без тех псевдонимов и команд don' t работают, как Вы ожидаете. Один из детей плаката для этого является комнатой псевдонима =' комната-i'. это привыкло Вас для удаления вещей со вторым шансом that' s не всегда там. – Community 15.05.2020, 04:09

Вы можете использовать nohup для предотвращения подключения GUI к терминалу:

nohup mupdf some.pdf &

Это позволит вам закрыть терминал, с которого вы запускаете, без закрытия программы. 118]

Вы также должны заметить, что команда nohup создаст файл с stdout и stderr команды, которую вы запускаете. Если вы хотите предотвратить это, добавьте &>/dev/null перед &.

nohup mupdf some.pdf &>/dev/null &
25
ответ дан 15.05.2020, 04:09
  • 1
    " nohup" обозначает " нет подвесьте up". это относится ко времени раннего Unix, когда (физические) терминалы регулярно присоединялись по телефону строки и you' d поэтому закрывают терминал, вешая трубку. – Joel Coehoorn 15.05.2020, 04:10
  • 2
    Дополнительная информация: команда nohup создаст файл nohup.out, содержащий вывод от команды. Это полезно, если Вы хотите просмотреть сообщения об ошибках. Если Вы don' t хотят, чтобы файл был создан, добавил перенаправление следующим образом: nohup mupdf some.pdf &>/dev/null & – Community 15.05.2020, 04:10

Теги

Похожие вопросы