2011-09-28 29 views
0

我有一個在debian框上運行的cronjob。在通過腳本某些點,我通過SIGPIPE在bash腳本中回顯變量時

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

我的猜測:cron的環境中,路徑是有限的,這意味着殼可能無法找到主機和/或TR。首先,找出主機名和tr所在的位置,並改爲使用絕對路徑,例如:

HOSTNAME=$(/bin/hostname -s | /usr/bin/tr A-Z a-z) 
+0

如果'tr'不在PATH中,那隻會導致sigpipe? –

+0

可能。我以前沒遇到過這個問題。是否使用tr完整路徑幫助? –