私のスクリプトをデバッグするときに必死になっているので、シニアの同僚から私に推奨される構造をいくつか使用しました。幹部からbashスクリプトを使用したバインドされていない変数
#!/bin/bash -x
set -ueo pipefail
exec &>/tmp/dq.log
source ${BASH_SOURCE%/*}/env-prd.sh
times=${2:-1}
sleep=${3:-1}
name="all-dq_hourly"
fs_lock_file="/tmp/mwa/jobs/prd-${name}.lock"
(flock -n 200
log="/var/log/mwa/prd/$(date +%Y-%m-%d)__${name}.log"
for i in $(seq 1 $times); do
if [[ ! -f /tmp/stop ]]; then
couple commands
fi
sleep $sleep
done
) 200>"$fs_lock_file" | tee -a $log
rm $fs_lock_file
、私は、tee -a $log
一部を結合していない変数との問題があることがわかりますcouple commands
オールライト実行されます。私はログ経路でバッククエストを使用しようとしましたが、メリットはありません。私はfs_lock_fileと同じ問題を疑うが、私はまだロギングを修正していない。
誰かが私の目を開いて、何が見えないのか教えていただけますか?私は指定されたパスにスクリプトのログを記録できません。
ありがとうございます、サブネット外に移動していただきありがとうございます。ただし、バインドされていない変数の問題を解決しましたが、スクリプトはまだログを記録しません。空のログファイルが作成され、そこに書き込まれません。私がやったやり方でteeコマンドを使うことができますか?サブシェル(約20個)内のすべてのコマンドに追加する必要がありますか? –
あなたの 'カップルコマンド'はstderrだけに書き込みますか?それを 'stdout 'にリダイレクトして、' |>'の前に '2>&1'を使ってみてください。ティー。 –
それは、stdoutは何も生産されていない、進歩はstderrを介して監視することができます、私は助けることができる喜んで –