Задать вопрос
Sinot
@Sinot

Как перенаправить вывод strace в tail?

Приветствую!

Суть вопроса "помнить" последние N строк вывода strace в файле. (Не весь вывод, а часть!)

Сама команда strace:
strace -t python3.9 sript.py > /dev/null

script.py выводит что-то в stdout и это не нужно.

Говорят как-то можно перенаправить вывод starce в tail -n 10, а уже его в файл. Который будет постоянно обновляться.
Скрипт долгий и starce -o не подходит. Выходной файл слишком большой.

Спасибо.
  • Вопрос задан
  • 263 просмотра
Подписаться 2 Средний 3 комментария
Пригласить эксперта
Ответы на вопрос 3
shurshur
@shurshur
Сисадмин, просто сисадмин...
Нет, так сделать нельзя, но есть утилиты, которыми можно принять через stdin лог и автоматически его ротировать по размеру (в том числе удаляя старые файлы). Например, multilog.

Примеры есть тут: https://superuser.com/questions/291368/log-rotatio...

Но в целом strace - это так себе средство отладки, тем более скриптов, лучше логгировать в самом скрипте, потому что в strace много ненужного мусора. Как вариант, можно с помощью опций ограничить системные вызовы, которые он будет логгировать.
Ответ написан
Комментировать
mayton2019
@mayton2019
Bigdata Engineer
strace ничего не знает про Python и будет показывать только системные вызовы.
До того как использовать strace я-бы предложил поискать диагностические инструменты
pyhhon (я думаю такие есть) и начать с них.

Тем более что мы имеем не бинарник а вполне себе доступный исходник.

К чему это я. В strace надо смотреть с какими-то expectations. С ОЖИДАНИЕМ того что мы хотим увидеть.
И с пониманием того как с этой информацией поступать дальше.

Просто так смотреть в стрейс из любопытсва - это зря терять время.
Ответ написан
Комментировать
nokimaro
@nokimaro
Меня невозможно остановить, если я смогу начать.
strace -t python3.9 sript.py | tee  >(tail -n 10 >> /output/file.log)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы