执行系统命令并且将输出写到指定日志文件的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
注释: 

  1. [ -d "xxxx" ] 判断目录路径是否存在
  2. [ -f  "xxxx" ] 判断文件是否存在
  3. touch 命令用于创建空文件,chmod 命令用于赋权。

特别注意:

  1. shell脚本对空格的要求异常的严格,必须注意空格,否则报错了你查都很难查。
  2. if 条件使用结束时必须有fi结尾,不然会报错,也是很难查了。

最后,这个是单词执行的脚本,如果要循环执行的话加上上一篇写的while true即可。不过我采用的是类unix系统的计划任务管理器crontab来添加计划任务,让系统按指定的计划时间来执行脚本。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值