Как в Ubuntu запускать задачу в фоне?

Доступен только один терминал. Как запустить /home/user/app в фоне, чтобы использовать терминал для других целей, и как вернуть app из фона в терминал?


Ответы (2 шт):

Автор решения: Pak Uula

знак '&' в конце команды запускает её в фоне.

  • Список задач, выполняющихся в фоне, возвращает команда jobs.
  • Для того, чтобы вернуть задачу из фона, fg %[номер-задачи]
  • Для того, чтобы отправить текущую задачу в фон: Ctrl-z заморозит текущее приложение и вернет управление башу. bg разморозить приложение и продолжит его выполнение в фоне.
  • Для того, чтобы остановить фоновую задачу, kill %[номер-задачи]

Пример: в фоне ping каждые две секунды пингует localhost. Затем фоновые задачи последовательно убиваются.

user@server$ ping -i 2 -p 1 localhost > ping1.log &
[1] 42785
user@server$ ping -i 2 -p 2 localhost > ping2.log &
[2] 42840
user@server$ jobs
[1]-  Running                 ping -i 2 -p 1 localhost > ping1.log &
[2]+  Running                 ping -i 2 -p 2 localhost > ping2.log &
user@server$ kill %1
user@server$ jobs
[1]-  Terminated              ping -i 2 -p 1 localhost > ping1.log
[2]+  Running                 ping -i 2 -p 2 localhost > ping2.log &
user@server$ kill %2
user@server$ jobs
[2]+  Terminated              ping -i 2 -p 2 localhost > ping2.log
user@server$ jobs
user@server$

Пример перевода задачи из фона на передний план и обратно

user@server$ ping -i 2 -p 1 localhost > ping1.log &
[1] 44564
user@server$ fg %1
ping -i 2 -p 1 localhost > ping1.log
^Z
[1]+  Stopped                 ping -i 2 -p 1 localhost > ping1.log
user@server$ jobs
[1]+  Stopped                 ping -i 2 -p 1 localhost > ping1.log
user@server$ bg
[1]+ ping -i 2 -p 1 localhost > ping1.log &
user@server$ jobs
[1]+  Running                 ping -i 2 -p 1 localhost > ping1.log &
user@server$
→ Ссылка
Автор решения: eri

Для более продвинутой работы в фоне лучше использовать утилиту screen.

запускаешь screen, внутри запустится шелл, в нем работаешь как обыно.

можно создать ещё одно "окно" нажав ctrl-a потом c. Там поделать что-то другое и переключть окна ctrl-a 0.

можно свернуть скрин выйдя в прошлый терминал по ctrl-a d и вернуться запустив скрин с номером сессии

→ Ссылка