Skip to content

Latest commit

 

History

History
61 lines (41 loc) · 2.57 KB

Логирование вывода консоли.md

File metadata and controls

61 lines (41 loc) · 2.57 KB

Логирование вывода консоли

Вариант 1

Команда script

script делает лог всего, что напечатано на вашем терминале. Это полезно для пользователей, которым нужна бумажная запись интерактивного сеанса в качестве доказательства проделанной работы, поскольку файл лога можно распечатать позже с помощью lpr. Если указан аргумент файла, скрипт сохраняет весь диалог в файл. Если имя файла не указано, лог сохраняется в файле с именем typescript.

script [-a] [-c command] [-e] [-f] [-q] [-t[=file]] [-V] [-h] [file]

Примеры использования

Сохранение вывода в файл myfile.txt

script myfile.txt
...
exit # or when Ctrl-D

Сохранение вывода ps -ax в файл /tmp/processes.txt

script -c "ps ax" /tmp/processes.txt

Вариант 2

#!/bin/bash
exec 3>&1 4>&2
trap 'exec 2>&4 1>&3' 0 1 2 3
exec 1>log.txt 2>&1
# вывод после будет вестись в log.txt

Объяснение

exec 3>&1 4>&2

Сохраняет файловые дескрипторы, чтобы их можно было восстановить до того состояния, в котором они находились до перенаправления, или использовать себя для вывода того, чем они были до следующего перенаправления.

trap 'exec 2>&4 1>&3' 0 1 2 3

Восстановите файловые дескрипторы для определенных сигналов. Обычно не требуется, поскольку они должны быть восстановлены при выходе из суб-оболочки.

exec 1>log.txt 2>&1

Перенаправить stdout в файл log.txt, затем перенаправить stderr в stdout. Обратите внимание, что порядок важен, когда вы хотите, чтобы они шли к одному и тому же файлу. stdout должен быть перенаправлен до того, как stderr будет перенаправлен на stdout.


bash