LinuxForum.Fans
Тема

фоновый процесс и stdout

Автор: beastie_devilette 10 сообщений 1818 просмотров
#248991

Есть программа, которая скачивает определенный набор файлов из сети. В процессе скачивания она выводит название файлов в stdout. По этому я не могу ввести ни одну команду. Далее перевожу программу в фоновый режим, что б можно было работать дальше. Ввожу команду bg, что бы скачивание файлов продолжалось дальше. Но программа снова делает вывод в stdout. Что теперь?, помогает только cntr-d. Как сделать что бы в фоне программа не выполняла вывод на экран? Запуск вида "./прога>>какой то файл" не подходит.

#248992
"beastie♥devilette" написал:
Запуск вида "./прога>>какой то файл" не подходит.

чем?

#248994

Нужно иметь контроль над ходом выполнения, т.е. видеть какие файлы в данный момент скачиваются и т.д. Так же нужна возможность продолжать работу в системе дальше. Ведь процесс скачивания длится около часа.

#248995
"beastie♥devilette" написал:
Нужно иметь контроль над ходом выполнения,  т.е. видеть какие файлы в данный момент скачиваются и т.д.

tail -f "какой то файл"

#248996

Хорошо, тогда что делать если программа была запущена обычным способом без перенаправления выходного потока в файл. Не ужели нет другого способа, например каких то сочетаний клавиш, что бы можно было снова вернуть процес в статус stoped. Если остановить процесс придется перекачивать заново. Конечно же можно было бы воспользоваться выводом файл и его последующим просмотром. Но меня как начинающего пользователя и человека который только начинает изучать линукс интересуют все возможности.

#248997

У вас же есть несколько терминалов. Логинитесь под именем своего пользователя, запускаете прогу и нажимаете Alt+F2, например, логинитесь снова и занимаетесь своими делами. Ну, а чтобы глянуть что там, к примеру, wget творит - переключаетесь на первый терминал (Alt+F1)... Кстати, wget может писать как на стандартный вывод, так и в файл, который можно просмотреть как говорит Fat-Zer и при этом работать в фоновом режиме.

#248998

В чем тогда логика фонового процесса? Я представлял себе так, что фоновый режим как раз таки и нужен что бы избавится от взаимодействия программы с пользователем. А если программа в фоне делает вывод на экран....., в чем смысл команды bg? Ведь можно запустить процесс, если нужно остановить ctrl-z, и запустить обратно fg.

#249004

вы хотите, запустить процесс "как обычно", а после bg сделать так, чтобы вывод от процесса, выполняющегося в бек-граунде глушился? Боюсь соврать, но в рамках posix'а без подпорки огромными костылями это технически не возможно... т.к. вывод направлен на устройство терминала, а влезть в сам процесс мы не можем... можно было бы для каждого процесса создавать свой псевдотерминал, но это транжирство чистой воды...

это так, теоритические фантазии...

ИМХО на практике bg применяется только если изначально забыл поставить амперсанд в конце команды....
а вообще в бекграунде или изначально выполняются команды, которые ничего не должны выводить типа тара, или их вывод осознанно сливается в файл или /dev/nyll, wget...

Если нужно контролировать весь вывод и доступна только одна сессия, то используют screen.

#249370

тоже так думаю

#249379

man nohup
man disown

Войдите или зарегистрируйтесь, чтобы ответить.