今天收到一个错误反应, 说在一个环境运行良好的备份脚本到另外一个环境运行出错了, 唯一差别是使用到的一个命令升级了一下.
检查之下发现, 我的备份脚本步骤是
1. 运行一个标准命令
2. 第一步的执行结果输出到一个日志文件中
3. 分析这个日志文件, 并执行另外一个命令.
在新环境中之所以出错, 就在于中间的这个日志文件是空的, 但是第一步的命令却是执行成功的, 无论怎么执行, 其标准输出都是空的.
Google了一番, 发现Linux的命令输出分为标准输出以及错误输出, 而我执行的
backup.sh > backup.log
导入文件的知识标准输出, 那么是不是升级后的命令将输出全部写入到错误输出中了呢?
测试一下, 果然如此.
改为backup.sh 2> backup.log就正常了, 这样, 错误输出就进入到了backup.log中
backup.sh &> backup.log也是可以的, 这样就把标准输出以及错误输出全部都输出到back.log文件中了.