LINUX.ORG.RU

Запись части лога из процесса


0

1

Имеется процесс, который я запускаю следующим образом: ./run &>/dev/null &

Как сделать так, чтобы, к примеру, записывался вывод первых 30 строк или 500 символов в файл ./log.txt?

То есть, запускаю ./run оно пишет в файл log.txt n строк своего результата и перестаёт писать, хотя процесс работает дальше.

Понимаю, что как-то так ./run &>./log.txt , но не пойму, как организовать в bash лимит на запись лога.

А как сделать, если в выхлопе нету 30 строк, то он всё равно писал результат? А то если 30 строк в выхлопе нету, то пока их не будет, в log.txt там ничего и не запишется.

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

stdbuf -oL перед head / sed -un 1,30p / вроде есть еще unbuffer из еxpect

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

Делаю так: ./run | stdbuf -oL head -n 10 >./start.log Всё работает просто идеально, как и требуется.

Делаю так: screen -A -m -d -S $user nice -n 12 /home/$user/run | stdbuf -oL head -n 10 >/home/$user/start.log Файл создаётся, но он пустой. Что Я делаю не так?

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

Можно попробовать команду, которая передаётся в screen, взять в кавычки вместе с перенаправлением. А то получается перенаправление вывода screen'а, а там обычно как раз пусто.

post-factum ★★★★★
()
Ответ на: комментарий от dobrofenix

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

dobrofenix
() автор топика
Ответ на: комментарий от post-factum

screen -A -m -d -S $user «nice -n 12 /home/$user/run | stdbuf -oL head -n 10 >/home/$user/start.log»

screen -A -m -d -S $user 'nice -n 12 /home/$user/run | stdbuf -oL head -n 10 >/home/$user/start.log'

screen вообще не выполняет команду.

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

да вы чего???

$ ./run | stdbuf -oL sed -n '1,30p' >./log.txt &

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