У меня есть оболочка script с большим количеством echo
. Я хотел бы перенаправить вывод в файл журнала.
Я знаю, что есть командный вызов cmd > logfile.txt
или сделать это в файле echo 'xy' > logfile.txt
, но можно ли просто установить имя файла в script, который затем автоматически записывает все эхо в этот файл?
Перенаправить вывод эха в оболочке script в файл журнала
Ответ 1
Вы можете добавить эту строку поверх своего script:
#!/bin/bash
# redirect stdout/stderr to a file
exec &> logfile.txt
ИЛИ иначе перенаправить только использование stdout:
exec > logfile.txt
Ответ 2
Я попытался управлять командой ниже. Это будет записывать вывод в файл журнала, а также печатать на консоли.
#!/bin/bash
# Log Location on Server.
LOG_LOCATION=/home/user/scripts/logs
exec > >(tee -i $LOG_LOCATION/MylogFile.log)
exec 2>&1
echo "Log Location should be: [ $LOG_LOCATION ]"
Ответ 3
Вы можете легко перенаправить различные части вашей оболочки script в файл (или несколько файлов) с помощью под-оболочек:
{
command1
command2
command3
command4
} > file1
{
command5
command6
command7
command8
} > file2
Ответ 4
LOG_LOCATION="/path/to/logs"
exec >> $LOG_LOCATION/mylogfile.log 2>&1