私はdebianの箱の上でcronjobを走らせています。スクリプトの特定の時点で、次のように変数を設定します。
HOSTNAME=$( hostname -s | tr A-Z a-z )
その後、その値をsyslogに記録します(したがって、すべてが正しく実行されていることがわかります)。
function log {
# just echo it
echo -n `date -u "+%s"`
echo -n " "
echo $1
/usr/bin/logger -t $0 -- $1
}
log "Hostname: ${HOSTNAME}"
しかし、この箱の上に、私はSIGPIPEを受け取ります。これはスクリプト全体で何度も発生します。私は "これが事実であることを確認するためにSIGPIPEを閉じ込めましたが、代わりに実際に問題を解決したいです。
SIGPIPEを引き起こしている可能性があるもの、およびそれを修正する方法を誰かに教えてもらえますか?私はもっと小さなテストスクリプトを作成しようとしましたが、そのスクリプトは同じようには反応しません。
回答:
回答№1は1私の推測:cron環境内では、PATHは限られています。これはシェルが見つけられないかもしれないことを意味します ホスト名 および/または tr。まず、hostnameとtrがどこにあるのかを調べて、代わりに絶対パスを使用します。次に例を示します。
HOSTNAME=$( /bin/hostname -s | /usr/bin/tr A-Z a-z )