Выполнить фоновую программу в bash без контроля задания

772
Wu Yongzheng

Я часто выполняю программы с графическим интерфейсом, такие как firefox и evince from shell. Если я наберу «firefox &», то firefox считается заданием bash, поэтому «fg» выведет его на передний план и «повесит» оболочку. Это раздражает, когда у меня уже работают некоторые фоновые задания, такие как vim.

Я хочу запустить Firefox и отключить его от bash. Рассмотрим следующий идеальный случай с моим воображаемым runbg:

$ vim foo.tex ctrl+z and vim is job 1 $ pdflatex foo $ runbg evince foo.pdf evince runs in background and I get me bash prompt back $ fg vim goes foreground 

Есть ли способ сделать это с помощью существующей программы? Если нет, я напишу свой собственный runbg.

1
`nohup` и` disown` - это не то, что вам нужно? slhck 11 лет назад 0
Обратите внимание, что вы можете указать задание, которое хотите переместить на передний план, например `fg% 1`. cYrus 11 лет назад 0

2 ответа на вопрос

3
JockoBudface

How about this?

( firefox & ) 

This seems to keep it out of the jobs table, and fg can't see it at all.

Оно работает. умная идея. Wu Yongzheng 8 лет назад 1
1
Fran

Сделай это:

bash$ firefox & bash$ disown 

Bash теперь забыл о фоновой работе, которую вы только что создали.

Это именно то, что я хочу. Благодарю. Wu Yongzheng 11 лет назад 0
После некоторого времени я не мог привыкнуть к этому. Проблема в том, что я должен указать номер работы. disown без аргументов не отсоединяет предыдущее фоновое задание, но «текущее задание», которое я нашел странно определенным. Wu Yongzheng 11 лет назад 0
Я считаю, что последнее заднее задание всегда является текущим заданием, если только вы не изменили текущее задание, прежде чем вводить `disown`. Fran 11 лет назад 0
Привет Фрэн, попробуй это. 1. вим фу; 2. Gedit Bar &; 3. отречься; 4. фг. Шаг 3 отрекается от vim, а шаг 4 выводит gedit на передний план. Прочитав руководство по bash, я все еще не знаю, почему bash считает vim текущей работой на шаге 3. Wu Yongzheng 11 лет назад 0