我在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的原因,以及如何解决这个问题?我已经尝试创建一个较小的测试脚本,但该脚本没有同样的反应。
答案 0 :(得分:1)
我的猜测:在cron环境中,PATH是有限的,这意味着shell可能无法找到主机名和/或 tr 。首先,找出hostname和tr所在的位置,改为使用绝对路径,例如:
HOSTNAME=$( /bin/hostname -s | /usr/bin/tr A-Z a-z )