执行系统命令并且将输出写到指定日志文件的shell脚本(2)
上一篇是个简单的可以执行并且写入日志的脚本,但是如果放到生产环境上就显得太粗糙了,所以需要进一步的优化:
#! /bin/bash if [ -d "/opt/bmc" ] ; then if [ -f "/opt/bmc/usysfault.log" ] ; then { date +"%Y-%m-%d %H:%M:%S" /usr/lpp/diagnostics/bin/usysfault #要执行的命令的绝对路径 } > /opt/bmc/usysfault.log #要存放日志文件的绝对路径 else touch /opt/bmc/usysfault.log chmod 755 /opt/bmc/usysfault.log { date +"%Y-%m-%d %H:%M:%S" /usr/lpp/diagnostics/bin/usysfault } > /opt/bmc/usysfault.log fi else if [ -f "/tmp/usysfault.log" ] ; then { date +"%Y-%m-%d %H:%M:%S" /usr/lpp/diagnostics/bin/usysfault } > /tmp/usysfault.log else touch /tmp/usysfault.log chmod 755 /tmp/usysfault.log { date +"%Y-%m-%d %H:%M:%S" /usr/lpp/diagnostics/bin/usysfault } > /tmp/usysfault.log fi fi注释:
- [ -d "xxxx" ] 判断目录路径是否存在
- [ -f "xxxx" ] 判断文件是否存在
- touch 命令用于创建空文件,chmod 命令用于赋权。
特别注意:
- shell脚本对空格的要求异常的严格,必须注意空格,否则报错了你查都很难查。
- if 条件使用结束时必须有fi结尾,不然会报错,也是很难查了。
最后,这个是单词执行的脚本,如果要循环执行的话加上上一篇写的while true即可。不过我采用的是类unix系统的计划任务管理器crontab来添加计划任务,让系统按指定的计划时间来执行脚本。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。