LINUX.ORG.RU

убрать вывод на консоль после bg

 , ,


0

1

Всех с пятницей!
Вопрос такой:
Предположим, я запустил компилиться большой проект (make), затем захотел переключить эту задачу в фон (Shift+Crtl+Z, bg 1). Можно ли как-то избавится от вывода результата компиляции, которая крутится в фоне, на консоль? Вариант с предварительным перенаправлением в файл или /dev/null до отправки в фон (!!!) не предлагать.
Можно ли видеть вывод в консоль только текущей задачи? При переключении обратно на задачу компиляции хочу дальше продолжить получать вывод с текущего состояния. Такое возможно?

Ответ на: комментарий от gv

пробовал:
bg %1 >/tmp/stdout 2>/tmp/stderr
bg 2>&1 > /dev/null
не помогает.
после screen - не переключает между задачами (jobs - ничего не показывает).

spike_by
() автор топика
Ответ на: комментарий от spike_by

screen может создавать несколько отдельных псевдотерминалов и переключаться между ними

Добавь в /etc/screenrc

caption always "%{= kw}%-w%{= BW}%n %t%{-}%+w %-= @%H - %Y.%m.%d - %c"

запускаешь screen

Ctl-A, C создаёт новый псевдотерминал

Ctl-A, <цифра> переключается на выбранный псевдотерминал

Ctl-A, Shift-' выводит список псевдотерминалов для выбора

Ctl-A, d отключиться от screen

Ctl-A, Shift-; назначить имя текущему псевдотерминалу. Просто для удобства переключения и поиска.

screen -r или screen -r <имя> подключиться к существующей сессии screen.

Также, говорят что сейчас рулит tmux. Но его я пока не знаю, а screen хватает. И главное screen есть во всех дистрибутивах.

router ★★★★★
()
Ответ на: комментарий от router

Самая важная особенность screen даже не в том, что он может создавать псевдотерминалы и переключаться между ними, а в том что всё в screen запущено в background, и не умрёт при разрыве ssh сессии. При следующем подключении к ssh можно восстановить сессию screen.

Получается что-то вроде демонизации обычных интерактивных консольных утилит

router ★★★★★
()
Ответ на: комментарий от spike_by

пробовал:
bg %1 >/tmp/stdout 2>/tmp/stderr
bg 2>&1 > /dev/null

Эм, это примеры того, что автор вопроса хотел бы, а не решение.

Решение см. собственно в ответах на вопрос и по ссылкам в них.

gv
()
Ответ на: комментарий от gv

Посмотрел, там скрипт какой-то предлагали и пр, но, как я понимаю, простого решения нету, или я не увидел?
Странно, что такое нельзя сделать стандартными средствами, но а отсекание вывода программы после отправки ее в bg... странно, что этого не происходит автоматом.

spike_by
() автор топика

При переключении обратно на задачу компиляции хочу дальше продолжить получать вывод с текущего состояния. Такое возможно?

man screen

emulek
()
Ответ на: комментарий от spike_by

Странно, что такое нельзя сделать стандартными средствами, но а отсекание вывода программы после отправки ее в bg... странно, что этого не происходит автоматом.

дык КУДА это отсекать? Как ты В ОДНОМ терминале сделаешь ДВА вывода? Сделай второй терминал. А если не хочешь второй, тогда man screen. Всё остальное — костыли.

emulek
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.