Ответ 1
update-client 2>&1 | tee my.log
2 > & 1 перенаправляет стандартную ошибку на стандартный вывод, а tee отправляет свой стандартный вход в стандартный вывод и файл.
У меня есть несколько сценариев, где мне нужно увидеть выходные данные и для вывода результата в файл, причем самым простым примером является
$ update-client > my.log
Я хочу видеть вывод команды во время ее запуска, но также записывать ее в файл. Я также регистрирую stderr
, поэтому я хотел бы иметь возможность регистрировать поток ошибок при его просмотре.
update-client 2>&1 | tee my.log
2 > & 1 перенаправляет стандартную ошибку на стандартный вывод, а tee отправляет свой стандартный вход в стандартный вывод и файл.
Просто используйте хвост для просмотра файла по мере его обновления. Обозначьте исходный процесс, добавив и после указанной выше команды. После выполнения приведенной выше команды просто используйте
$ tail -f my.log
Он будет постоянно обновляться. (обратите внимание, что он не скажет вам, когда файл завершит работу, чтобы вы могли вывести что-то в журнал, чтобы сообщить вам об этом. Ctrl-c для выхода из хвоста)
другой вариант заключается в использовании захвата на основе блоков из script (не уверен, что это правильный технический термин).
Пример
#!/bin/bash
{
echo "I will be sent to screen and file"
ls ~
} 2>&1 | tee -a /tmp/logfile.log
echo "I will be sent to just terminal"
Мне нравится больше контроля и гибкости - поэтому я предпочитаю этот путь.
Для этого вы можете использовать команду tee:
command | tee /path/to/logfile
Эквивалент без записи в оболочку будет:
command > /path/to/logfile
Если вы хотите добавить ( → ) и показать вывод в оболочке, используйте параметр -a:
command | tee -a /path/to/logfile
Обратите внимание, что труба будет захватывать только stdout, ошибки в stderr не обрабатываются трубой с тройником. Если вы хотите регистрировать ошибки (из stderr), используйте:
command 2>&1 | tee /path/to/logfile
Это означает: выполнить команду и перенаправить поток stderr (2) в stdout (1). Это будет передано трубе с тие-приложением.
Узнайте об этом на сайте askubuntu