web-dev-qa-db-ja.com

シェルスクリプトのエコー出力をログファイルにリダイレクトする

echoをたくさん含むシェルスクリプトがあります。出力をログファイルにリダイレクトしたいと思います。コマンド呼び出しcmd > logfile.txtがあること、またはファイルecho 'xy' > logfile.txtで実行することは知っていますが、スクリプトでファイル名を設定するだけで、このファイルにすべてのエコーが自動的に書き込まれますか?

18
wasp256

スクリプトの先頭に次の行を追加できます。

#!/bin/bash
# redirect stdout/stderr to a file
exec &> logfile.txt

または、stdoutの使用のみをリダイレクトする場合:

exec > logfile.txt
27
anubhava

以下のコマンドを使用して管理しようとしました。これにより、ログファイルに出力が書き込まれ、コンソールに出力されます。

#!/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 ]"
14
Sandeep Singh

サブシェルを使用して、シェルスクリプトのさまざまな部分をファイル(または複数のファイル)に簡単にリダイレクトできます。

{
  command1
  command2
  command3
  command4
} > file1
{
  command5
  command6
  command7
  command8
} > file2
8
txipi
LOG_LOCATION="/path/to/logs"    
exec >> $LOG_LOCATION/mylogfile.log 2>&1
3
Elayaraja Dev