как в ubuntu запускать задачу в фоне

Рейтинг: 1Ответов: 2Опубликовано: 27.07.2025

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

Ответы

▲ 2

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

  • Список задач, выполняющихся в фоне, возвращает команда 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$
▲ 1

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

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

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

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