Как я могу запустить команду из терминала, не блокируя ее?

45

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

Сальвадор Дали
источник

Ответы:

60

Существуют разные способы запуска программы терминала и продолжения использования терминала:

  • Вы можете открыть другую вкладку терминала (щелкните правой кнопкой мыши, затем выберите «Открыть новую вкладку»).
  • Вы можете добавить &к команде, которую вы запускаете. Имейте в виду, что вы не увидите текстовый вывод на терминал, например сообщения об ошибках.
  • Вы можете напечатать Ctrl- Zи затем запустить bg. Это имеет тот же эффект, что и бегcommand &
  • Вы можете запустить nohup command &и затем нажать Enter. (Спасибо ccpizza , см. Комментарии ниже.)

Однако нажатие Alt- F2и затем запуск вашей команды из графического интерфейса обычно считается лучшей практикой - терминала вообще нет!

Обратите внимание, что при использовании &(не nohup) закрытие терминала по- прежнему завершает работу приложения, если вы не запустите его disownпозже .

РЕДАКТИРОВАТЬ: похоже, что использование nohupиногда оставляет небольшие помет в вашей домашней папке. То, что обычно регистрировалось в терминале, по-видимому, сохраняется в файл в ~ /.

~~

Простой способ запустить программу в фоновом режиме - program-name & disownвы попадете в терминал, который можно закрыть, не прерывая процесс.

WindowsEscapist
источник
4
Чтобы предотвратить уничтожение дочернего процесса после закрытия терминала, вы можете запустить свое приложение как nohup firefox&.
ccpizza
Круто! Я этого не знал (но после экспериментов терминал все еще «заблокирован»)!
WindowsEscapist
он не «заблокирован», он только «выглядит» заблокированным, если вы наберете команду enter, вы получите приглашение.
ccpizza
Ах, я не заметил этого раньше.
WindowsEscapist
program-name & disownэто хорошее решение
Доктор Генри
8

Вы можете запустить команду с & после.

Например:

Thunderbird &

Смотрите здесь для получения дополнительной информации.

Viertaxa
источник
Это работает только до тех пор, пока вы не закроете окно терминала, как только вы закроете окно, программа прекратит работу
kurdtpage
6

Вы можете использовать setsidдля запуска программы в новом сеансе с добавлением к, &>/dev/nullтак что вы не будете получать никаких сообщений журнала.

Так было бы как

setsid program-name &>/dev/null

Rumid
источник
Круто. Он должен поддерживать выполнение процесса, когда выход пользователя из системы и текущий сеанс закрыты.
Михаил Москалев
1

Используя screenкоманду, вы можете открыть несколько сеансов терминала, используя одно окно, и нажмите

apt-get install screen (On Debian based Systems)

yum install screen (On RedHat based Systems)

screen (начать новый экран)

[Your command]

Ctrl+A d покинуть экран ... и так далее

https://linuxize.com/post/how-to-use-linux-screen/

Ахмед Исмаил
источник
0

Вы можете запустить его в виртуальном терминале tmux(или, как screenя слышал, он больше не поддерживается)

# This ataches your terminal to a virtual terminal
tmux
run_your_command
# This detaches your virtual terminal (previous command can be running)
CTRL-b d
run_other_commands # on your terminal
# re-attach the virtual terminal to see the status of run_your_command
tmux a

tmux может сделать намного больше, например:

  • перенести виртуальный терминал на другой терминал
  • разделите виртуальный терминал на несколько терминалов (другие пользователи могут видеть, что вы делаете ;-))
  • разделить «экран», чтобы иметь несколько терминалов.
  • ...

https://www.hamvocke.com/blog/a-quick-and-easy-guide-to-tmux/

Себастьян Д.А. РОЧА
источник