Настройте путь stderr, добавляется в файл

В Bash я использую следующее trap команда в последней строке моего .bashrc повторить все команды к строке заголовка.

# trap commands and echo them to xterm titlebar. Must be last line.
trap 'echo -ne "\033]0;$BASH_COMMAND $USER@${HOSTNAME}>$(pwd)\007"' DEBUG

Таким образом, если Вы выполняетесь sleep 10, Вы будете видеть, что Ваша строка заголовка изменяется на sleep 10 на время команды, после которой это возвратится к user@host>pwd.

1
29.12.2011, 09:29
3 ответа

Вы попробовали это?

rsync -av blah blah 2>&1|perl -e "while(<>){s/^/`date`  /g; print;}" >>logfile

Это добавит дату и некоторые пробелы к началу строки.

1
27.01.2020, 23:40
  • 1
    Прекрасный! Это делает точно, что я хочу! –  IG83 02.01.2012, 09:51
  • 2
    Привет снова! Существует ли способ вставить оператор IF там, чтобы иметь Успех в другой файл (проверьте мое описание)? –  IG83 02.01.2012, 20:34

Wiki Greg имеет запись при добавлении меток времени к каждой строке потока, который покрывает несколько методов, в зависимости от Вашей среды. Они все сводятся к передаче по каналу потока через цикл/процесс, который добавляет в метках времени; совместимая POSIX версия:

while IFS= read -r line; do
    echo "$(date +%Y%m%d-%H:%M:%S) $line"
done
0
27.01.2020, 23:40
  • 1
  • 2
    Вместо того, чтобы просто предоставить ссылку, по крайней мере, включают краткий обзор в Ваш ответ... –  jasonwryan 29.12.2011, 08:42
  • 3
    в ссылках говорится все, что должно быть сказано, и тот сайт, является большим для изучения удара; Вы нажмете его. –  Samus_ 30.12.2011, 00:48
  • 4
    Да, это - большая ссылка. Однако этим сайтом является Wiki, не линкоферма. Downvoting. Счастливый восстановить Вашу точку, когда Вы обновляете свой ответ... –  jasonwryan 30.12.2011, 10:03
  • 5
    @Samus_, который Мы действительно предпочитаем, если ответы способны к положению одного, в случае, если повреждения ссылки или пользователи уже видели его и решили, что это не полезно (существует много meta. ТАК вопросы об этом, особенно ответы, которые просто содержат ссылки в другом месте действительно “хорошие ответы”?). Я отредактировал Ваш на этот раз; мы обычно просто оставляем комментарий и удаляем их –  Michael Mrozek♦ 31.12.2011, 01:21

Я знаю, что это были больше чем 3 месяца, с тех пор как я задал этот вопрос, но я думал, что будет хорошо показать то, что я закончил тем, что делал в своем сценарии оболочки.

Как я описал, я должен был так или иначе поймать stderr, чтобы управлять им в файле журнала, например, добавить метку времени. Я смог сделать это использование файлы и с тем, что предложенный Patrick, но я хотел сохранить его максимально простым.

Так, это - то, как я разработал его:

if ! result=$(command_that_will_produce_errors 2>&1 1>/dev/null)
then
    echo "There was an error on $(date): $result" >> logfile
else
    echo "Command executed successfully on $(date)" >> logfile
fi
1
27.01.2020, 23:40

Теги

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