一個&&命令引發的慘案
阿新 • • 發佈:2018-11-03
背景:我用一條命令獲取每臺機器的日誌,命令如下:
[[email protected] scripts]# grep -13 `date -d yesterday +%d-%b-%Y` /var/log/php/php_errors.log > /tmp/$HOSTNAME-PhpErrorLog-`date -d yesterday +%Y%m%d`.log && grep -13 `date -d yesterday +%d-%b-%Y` /var/log/php/slow.log > /tmp/$HOSTNAME-slowlog-`date -d yesterday +%Y%m%d`.log && grep `date -d yesterday +%Y/%m/%d` /var/log/nginx/8082_web_error.log.1 > /tmp/$HOSTNAME-Api_Log-`date -d yesterday +%Y%m%d`.log && tar -czf /tmp/${HOSTNAME}_`date -d yesterday +%Y%m%d`.tar.gz /tmp/${HOSTNAME}-* && sz /tmp/${HOSTNAME}_`date -d yesterday +%Y%m%d`.tar.gz && rm /tmp/${HOSTNAME}*
但這個命令在一臺機器上沒有任何的反應,然後我就手動執行每一條命令,成功了
但合起來執行一直沒輸出
解決:
發現輸出的php_errorlog檔案是空的,、tmp資料夾也只生成了一個檔案
猜想是第一條命令沒有執行成功,導致後面命令沒有執行
測試了下果然如此
測試是否grep匹配不到資料就返回非0
果然如此,
所以解決方案,將前面幾個&&換成分號