Як я можу запустити команду з терміналу, не блокуючи її?


45

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

Відповіді:


60

Існують різні способи запуску термінальної програми та продовження використання терміналу:

  • Ви можете відкрити іншу вкладку терміналу (клацніть правою кнопкою миші та виберіть "Відкрити нову вкладку").
  • Ви можете додати &до запущеної команди. Майте на увазі, що ви не побачите текстовий вихід у термінал, наприклад повідомлення про помилки.
  • Ви можете ввести Ctrl- Zа потім запустити bg. Це має такий же ефект, як і бігcommand &
  • Можна запустити, nohup command &а потім натиснути клавішу Enter. (Завдяки ccpizza дивіться коментарі нижче.)

Однак натискання Alt- F2а потім запуск вашої команди з GUI зазвичай вважається найкращою практикою - терміналу взагалі немає!

Зауважте, що при використанні &(не nohup) закриття терміналу все одно припинить роботу програми, якщо ви не запустите disownпотім .

РЕДАКТУВАННЯ: Схоже, використання nohupіноді залишає невеликі посліди у вашій домашній папці. Те, що зазвичай було зареєстровано в терміналі, очевидно, зберігається у файлі в ~ /.

~~

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


4
Щоб запобігти вбивству дочірнього процесу після закриття терміналу, ви можете запустити додаток як nohup firefox&.
ccpizza

Класно! Я цього не знав (але після експерименту термінал все ще "заблокований")!
WindowsEscapist

він не "заблокований", він лише "виглядає" заблокованим, якщо ви введете один раз, ви отримаєте запит.
ccpizza

Ах, я цього раніше не помічав.
WindowsEscapist

program-name & disownце приємне рішення
Доктор Генрі

8

Ви можете запустити команду за допомогою & після.

Наприклад:

громовідвід &

Дивіться тут для отримання додаткової інформації.


Це працює лише до закриття вікна терміналу, після закриття вікна програма припиняється
kurdtpage

6

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

Так було б як

setsid program-name &>/dev/null


Класно. Він повинен тримати процес, коли вихід користувача та поточний сеанс закриті.
Михайло Москальов

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/

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.