Переместить запущенную программу на задний план в bash

10

Если я запускаю программу в bash, я могу приостановить ее, нажав Ctrl+ Z. Если я хочу оставить программу работающей, я могу использовать bgкоманду. Есть ли какой-то способ напрямую поместить программу в фоновый режим, без необходимости набирать текст bg?

Пояснение : я хочу поставить программу в фоновом режиме, когда она уже запущена, не приостанавливая ее.

Калле Эльмер
источник
2
Это не дубликат. Я не хочу, чтобы программа работала, когда окно терминала закрыто, и я не могу набрать другую команду. Я хочу поставить процесс в фоновом режиме, когда он уже запущен.
Калле Эльмер
1
да, это не дубликат, пожалуйста, откройте это снова.
saji89
Спасибо за всех тех парней, которые помогли открыть это .. @Kalle, Вопрос теперь вновь открыт.
saji89
Большое спасибо! Что касается фактического поиска ответа на вопрос, я думаю, что единственный способ - это сначала приостановить его, а затем подойти к нему.
Калле Эльмер

Ответы:

4

Я не думаю, что можно переместить запущенную программу в фоновый режим (пока процесс все еще находится в запущенном состоянии).
Однако есть приложение под названием GNU-Screen , с помощью которого вы можете запускать любое количество консольных приложений - интерактивных командных оболочек, приложений на основе curses, текстовых редакторов и т. Д. - в пределах одного терминала.
Вот хороший учебник по GNU-Screen.
Обратите внимание, что он не выполняет именно то, что вы просили, но в любом случае служит цели.
Пример:
Вот реализация того, что вы просили, используя GNU-Screen.

  1. Выполнить screen
    Вы получите подробную информацию о программном обеспечении. Нажмите клавишу возврата.
  2. Теперь вы увидите ваш обычный терминал. Однако, это окно экрана. Введите любую команду, скажем vlc. Это запустит процесс в этом окне.
  3. Теперь, чтобы открыть новый тип окна Ctrl+, Aа затем. CВы можете запустить новую команду здесь. Обратите внимание, что процесс, который вы запустили в окне 1, все еще выполняется.
  4. Чтобы отсоединиться от экрана, нажмите Ctrl+, Aа затем D. Теперь вы вернетесь к своему старому termianl. Однако любой процесс, который вы запустили с экрана, все еще будет работать.
воспламеняться
источник
4

Насколько мне известно, вы можете запустить его, а затем добавить & после этого, как это:myprogram &

Я могу быть очень неправ здесь, однако.

[РЕДАКТИРОВАТЬ]: При более внимательном рассмотрении этого, если вы запустите выше, приложение закроется, когда вы закроете терминал. Если вы хотите, чтобы приложение работало в фоновом режиме, то, насколько я знаю, приложение должно быть написано таким образом, чтобы поддерживать поведение демона.

[РЕДАКТИРОВАТЬ 2]: nohup command & кажется, ближе к тому, что вы хотите достичь. Nohup позволит приложению запускаться и игнорирует его ввод и перенаправляет его вывод в файл, называемый nohup.outв текущем каталоге.

NlightNFotis
источник
Мне все равно, закрыто ли оно, когда я закрываю окно терминала. Все, что мне нужно, это сочетание клавиш в bash, которое работает как Ctrl + Z, но будет поддерживать процесс в фоновом режиме, а не приостанавливать его.
Калле Эльмер
0

Это не может быть реальным ответом. Интересно, чем отличается Bash между Ubuntu и MSYS.

Я запускаю MSYS, и когда я бегу Application/Chrome &, он сразу переходит в фоновый процесс. Я могу использовать MSYS Bash в качестве следующего приглашения начать мигать.

И это вопросы Переместить запущенную программу на задний план с похожими намерениями?

Эдвард Чан JW
источник