1. 程式人生 > >一個&&命令引發的慘案

一個&&命令引發的慘案

背景:我用一條命令獲取每臺機器的日誌,命令如下:

[[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

 

果然如此,

所以解決方案,將前面幾個&&換成分號