10

簡単なダウンロード スクリプトがあり、これを使用するset -xとうまくいきます。実行される各ステップを確認でき、スクリプトまたはダウンロードのエラーを特定できます。

#!/bin/bash
set -x
#short_date=$(/bin/date +%m%d%y)
short_date=$(/bin/date -d "8 day ago" +%m%d%y)
#long_date=$(/bin/date +%Y%m%d)
long_date=$(/bin/date -d "8 day ago" +%Y%m%d)
scp -v -P 1332 -i /home/casper/.ssh/id_rsa_BANK friendly@192.168.1.10:/home/friendly/transfer/out/EXCHANGE_$short_date.csv /local/casper3/dailymetrics/BANK_$long_date.csv

この作業を自動化したい。set -x出力をログ ファイルに保存する方法はありますか? たぶん、1 つのログ ファイルに、または毎日別のログ ファイルに。何が一番うまくいくかわかりません。

set -x以下は、上記のスクリプトからのサンプル出力です。

++ /bin/date +%m%d%y
+ short_date=102814
++ /bin/date +%Y%m%d
+ long_date=20141028
+ scp -v -P 1332 -i /home/casper/.ssh/id_rsa_BANK friendly@192.168.1.10:/home/friendly/transfer/out/EXCHANGE_102814.csv /local/casper3/dailymetrics/BANK_20141028.csv
Executing: program /usr/bin/ssh host 192.168.1.10, user friendly, command scp -v -f /home/friendly/transfer/out/EXCHANGE_102814.csv
OpenSSH_5.3p1, OpenSSL 1.0.0-fips 29 Mar 2010
debug1: Reading configuration data /home/casper/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Applying options for *
debug1: Connecting to 192.168.1.10 [192.168.1.10] port 7777.
debug1: Connection established.
4

1 に答える 1

16

bash 4 を想定すると、出力が書き込まBASH_XTRACEFDれるファイル記述子 (デフォルトでは 2、stderr) をオーバーライドするように設定できます。set -x

short_date=$(/bin/date +%m%d%y)
exec {BASH_XTRACEFD}>>"$short_date".log
set -x

4.1以降ではなくbash 4.0を実行している場合、BASH_XTRACEFDはありますが、ファイル記述子の自動割り当てはありません。つまり、自分で割り当てる必要があります。以下の例では、ファイル記述子 100 を選択しています。

short_date=$(/bin/date +%m%d%y)
exec 100>>"$short_date".log
BASH_XTRACEFD=100
set -x

古いリリースの場合、唯一の選択肢は、xtrace ストリームだけでなく、すべての stderr をリダイレクトすることです。

short_date=$(/bin/date +%m%d%y)
exec 2>>"$short_date.log"
set -x
于 2014-10-28T14:33:39.573 に答える