На этот вопрос уже есть ответ здесь:
Я ОЧЕНЬ новичок в мире Linux. Я использую Ubuntu 15.04 на ноутбуке Lenovo. Мой эмулятор терминала - Gnome Terminal.
Я знаю несколько вещей. Допустим, я набираю cd Documents/terminalpractice/python_folder
. Затем я набираю, например, touch askubuntu.py
. Затем я использую команду, gedit askubuntu.py
.
В этот момент на моем экране откроется текстовый редактор gedit, и я могу пытаться писать сколько угодно. Однако в окне терминала, я полагаю, запущен "процесс" gedit? Поэтому я не могу использовать терминал, пока не выйду из gedit (я сохраняю, а затем нажимаю "X" в верхнем углу).
Почему это происходит? Я могу использовать графический интерфейс для открытия папок, дважды щелкнуть на моем askubuntu.py, и он откроется в gedit, не влияя на то, что происходит в терминале. Я хотел бы знать, почему это происходит.
, Почему это происходит?
, Когда Вы просто работаете:
gedit filename
это выполняет процесс на переднем плане. Чтобы отправить его в фон и продолжить использовать терминал, используйте:
gedit filename &
Примечание, которое это (и конечно то выше) выполнит gedit
как подпроцесс Вашего терминала, поэтому при выходе из терминала, он также выйдет gedit
.
Так для выполнения его 'корректно' используйте:
nohup gedit >/dev/null &
nohup
выполнит gedit, отсоединенный от терминала, и следовательно это неуязвимо для зависаний. >/dev/null
перенаправления stdout к специальному местоположению dev/null
, таким образом, предотвращая создание nohup.out
файл.
См. man nohup
и этот вопрос для получения дополнительной информации.
Это нормально. При выполнении команды, терминал не получает другую команду, пока не закончено с той. Способ выполнить команды, как Вы хотите, состоит в том, чтобы нажать ALT + F2 и ввод команды, в которой Вы нуждаетесь.
, Если Вы делаете это в терминале, это не примет другую команду до инструкций существующих концов команды.
Это - потому что Вы запускаетесь gedit
от терминала на переднем плане. Любая команда, которую Вы выполняете таким образом, будет пожиратель ресурсов командная строка, пока команда не завершилась. Таким образом, при выходе из окна, открытого на gedit
терминальная подсказка работает снова. Можно выполнить команды в фоновом режиме путем помещения &
в конце команды.
можно просмотреть все фоновые команды, которые Вы запустили при помощи эти jobs
команда.
можно также нажать Ctrl + Z для приостановки команды при выполнении его обычно можно затем отправить его в фон путем ввода bg
.
Это похоже на запущение программы текстового режима или приложения: это начинает работать, и терминал (хорошо, не терминал, но интерпретатор команд) не будет доступен, пока приложение не закончит работать. Например, выполненный "нано" и Вы будете видеть то же поведение (интерпретатор команд "уступает" в то время как выполнение приложения).
Просто, потому что приложение (gedit) открывает дополнительное графическое окно, не изменяет базовое, основное поведение.
при запуске команды на терминале можно попросить, чтобы интерпретатор команд выполнил его в фоновом режиме при помощи &:
gedit blahblah &
, Если команда уже работает (с "запертым" терминалом), можно нажать ctrl-z (который приостанавливает под управлением в настоящее время процесс - отмечают, что gedit окно становится безразличным), затем тип bg
(который отправляет приостановленный процесс в фон).