
Команда time(1)
позволяет вам засекать время выполнения любой команды, передавая ее в качестве аргументов time
.
Я знаю, что можно перенаправить stderr
и stdout
в файл через 2>&1
, и есть также , tee(1)
который позволяет копировать его ввод и на экран, и в файл. Однако я не знаю, как добавлять временные метки в логи.
Существует ли инструмент для перенаправления stderr
в stdout
файл и добавления к нему временных меток для целей регистрации?
решение1
Вы можете использовать ts(1)
из moreutils.
ts
отmoreutilsбудет добавлять временную метку к каждой строке ввода, которую вы ему дадите. Вы также можете отформатировать ее с помощью strftime.
$ echo 'foo bar baz' | ts
Mar 21 18:07:28 foo bar baz
$ echo 'blah blah blah' | ts '%F %T'
2012-03-21 18:07:30 blah blah blah
$
Чтобы установить его:
sudo apt-get install moreutils
Содержание скопировано из этого ответа:https://stackoverflow.com/a/9813614/221689
решение2
Попробуйте annotate-output
из Debiandevscriptspackage. Он показывает временные метки и пишет "O" перед стандартным выводом и "E" перед стандартной ошибкой. Пример:
# run `ls` on one file that exists, and one that doesn't...
annotate-output ls /bin/bash /tmp/boosh
Выход:
03:30:52 I: Started ls /bin/bash /tmp/boosh
03:30:52 O: /bin/bash
03:30:52 E: ls: cannot access '/tmp/boosh': No such file or directory
03:30:52 I: Finished with exitcode 2