Отправить остановленное задание в фон с перенаправлением вывода

Ivan8209

Кудесники командной строки, а никто не озаботился таким вопросом?
Допустим запускается задание. Например, make.
Через некоторое время понимаешь, что это надолго.
В фон это отправляется легко: остановил по C-z, "bg" и вперёд.
Но оно же пишет stdout/stderr в терминал!
Есть какой-нибудь не полностью ручной и хакерский способ перенаправить выдачу в файл?
Не очень понятно, как гуглять, потому что всё забито разъяснением,
как перенаправлять выдачу при запуске задания.
---
...Я работаю антинаучным аферистом...

Barbie29

make 1>>file 2>>file
?

Marinavo_0507

Если процесс уже открыл терминал, то просто так не заменить его на файл.

Ivan8209

Я в курсе.
Иначе бы не было вопроса.
---
...Я работаю антинаучным аферистом...

Marinavo_0507

Дебаггером, наверное, можно пройти и заменить дескрипторы.
Но в случае make не проще ли прервать и заново запустить?

hoha32

если делать make buildworld, то не проще.

Ivan8209

> Дебаггером, наверное, можно пройти и заменить дескрипторы.
K> не полностью ручной и хакерский
> Но в случае make не проще ли прервать и заново запустить?
Вопрос не про make, существует куча программ,
которые не прерываются настолько дёшево.
---
...Я работаю антинаучным аферистом...

Ivan8209

Он не зачистит промежуточные успехи, по крайней мере, так можно сделать.
Да и восстанавливается --- хоть и с затратами времени, но не вручную.
---
...Я работаю антинаучным аферистом...

Marinavo_0507

Ты разве не знал, что юникс - отстой?
Чтоб был не ручной, можно написать скрипт.

Marinavo_0507

плохие мейкфайлы, наверное
в хороших всё гладко должно проходить

Ivan8209

> Чтоб был не ручной, можно написать скрипт.
Который будет проходить отладчиком?
---
"Это кодовое название проекта следующего (после K&R) поколения."

Ivan8209

А там и проходит гладко.
Ну, может быть, конечно, для этого надо прочитать FM...
---
...Я работаю антинаучным аферистом...

Barbie29

тогда попробуй опцию dumptermcap команды screen и вообще поройся в гугле на предмет возможности отправлять прогу в скрин и писать вывод. Так-же посмотри программу nohup, она вроде именно это и умеет:
сначала даешь команду screen, а в скрине
[observ vlc-0.8.4a 19:03:19]$ nohup make
nohup: appending output to `nohup.out'
[observ vlc-0.8.4a 19:03:29]$
отправляешь в скрин, на следующий день заходишь, изучаешь вывод команды мейк в файле nohup.out

stm7583298

Это помогает до того, как процесс запущен

Landstreicher

> Дебаггером, наверное, можно пройти и заменить дескрипторы.
Ты сам так делал? Расскажи подробнее. Я пробовал — у меня почему-то не получалось (так и не понял почему).
А еще лучше — не просто перенаправить в файл, а засунуть в screen. Есть идеи для такого?
Ручные и хакерские способы годятся.

Marinavo_0507

Нет, сам не делал

Barbie29

а че ему надо то? запустить мейк и в какой то произвольный момент начать писать в файл? дык пусть в баше забиндит какойннить евент с клавки...

Barbie29

еще раз перечитал, походу все это долботня. аффтару советую man screen до просветления...

Ivan8209

>> Дебаггером, наверное, можно пройти и заменить дескрипторы.
> Я пробовал — у меня почему-то не получалось (так и не понял почему).
Может, терялся терминал и --- HUP?
> засунуть в screen.
> хакерские способы годятся.
Врисовать в libc?
---
...Я работаю антинаучным аферистом...

Ivan8209

По ходу, перечитай ещё раз.
screen покатит тогда, когда ты покажешь способ завернуть в него _уже_запущенное_ задание.
---
"Студенту надо повторять всё три раза, Ганс. Три раза. Запомни, Ганс: три раза."

Barbie29

а ты в скрине запускай =)
это все равно что спросить: хочу из юзерспеса отключать вывод printk из драйвера NVidia какогоннить или sshd в messages...

ppplva

Ты сам так делал? Расскажи подробнее. Я пробовал — у меня почему-то не получалось (так и не понял почему).
Я делал, получилось. Правда, на тестовой программе, которая раз в секунду строчку печатает. Может, на реальных задачах вылезет какой-нибудь косяк.
В /proc смотришь открытые дескрипторы, и переоткрываешь из gdb.

Ivan8209

> а ты в скрине запускай
Если постоянно набирать что-то лишнее, то лучше это будет обёрткой,
отправляющей задания на астральный план, чтобы они о своих успехах
по почте сообщали.
---
...Я работаю антинаучным аферистом...

Ivan8209

Кстати, на правах рекламы.
Есть довольно полезная примочка, "rlwrap".
Не знаю, есть ли она в портах FreeBSD, но у меня уже есть.
---
...Я работаю антинаучным аферистом...

krishtaf

есть

Ivan8209

А куда его запихали?
misc?
---
...Я работаю антинаучным аферистом...
Оставить комментарий
Имя или ник:
Комментарий: