LINUX.ORG.RU
Форум — Admin  

Логирование с метками

 , ,


0

2

Скрипт /tmp/1.sh

#!/bin/bash
rm /tmp/log
#id=`date +%G%m%d_%H%M%S`
{
   echo_ 1
   echo 2
   echo_ 3
   echo 4
   echo_ 5
    echo 6
} 2> >(sed 's/^/[ERROR] /' >> /tmp/log) >> /tmp/log

Запуск
$ /tmp/1.sh 
В логе события не попрядку
petav@pc251:~$ cat /tmp/log
2
4
6
[ERROR] /tmp/1.sh: строка 4: echo_: команда не найдена
[ERROR] /tmp/1.sh: строка 6: echo_: команда не найдена
[ERROR] /tmp/1.sh: строка 8: echo_: команда не найдена
Задача: Отмечать сообщения /tmp/log из stderr и соблюсти порядок c stdoutd

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

понять сложно, в русской терминологии слово «поток» перегружено. Есть «поток ввода/вывод» и есть «поток исполнения».

Видимо, «поток исполнения» в Вашей терминологии. Я про программу/процесс, которая обрабатывает дескриптор. Один просто пропускает вперёд, второй добавляет префикс. Они независимы, а потому синхронизироваться не обязаны. Собственно, задача синхронизации решается таймстампом и буфером.

ПС. И да, Ваш собеседник вполне отдаёт себе отчёт, что это развлекуха скорее, чем реальная задача.

bbc69
()
  • Markdown
Пустая строка (два раза Enter) начинает новый абзац. Знак '>' в начале абзаца выделяет абзац курсивом цитирования.
Внимание: прочитайте описание разметки Markdown.
Используйте Ctrl-Enter для размещения комментария