Регистрируйте любую команду, похожую на `time`

Регистрируйте любую команду, похожую на `time`

Команда 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

Связанный контент