一个&&命令引发的惨案

版权声明:如需转载,请注明作者及出处 https://blog.csdn.net/qq_33317586/article/details/83507361

背景:我用一条命令获取每台机器的日志,命令如下:

[root@localhost 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文件夹也只生成了一个文件

猜想是第一条命令没有执行成功,导致后面命令没有执行

测试了下果然如此

扫描二维码关注公众号,回复: 3911040 查看本文章

测试是否grep匹配不到数据就返回非0

 

果然如此,

所以解决方案,将前面几个&&换成分号

 

猜你喜欢

转载自blog.csdn.net/qq_33317586/article/details/83507361