使用shell 脚本运行命令

需求

  1. ping 1s/次 ping 网络是否通讯,将结果保存到log
  2. dstat 1s/次 将结果保存到log
  3. 依赖包,自动安装

关键

  • ping 命令输出带时间 log, st
  • dstat 数据文件 ,使用–output 报错,Types 没有
  • 使用离线安装包,sudo apt-get download 下载deb包

代码实现

脚本实现如下:

#!/usr/bin/env bash

# ./collect_info.sh start
# ./collect_info.sh stop
# ./collect_info.sh clean
export LANG="zh_CN.UTF-8"
optype=$1
LOG_PATH="log"
dstat_num=0
st_num=0

function start()
{
    echo "start begin"
    if [ -d "${LOG_PATH}" ];then
        clean
    fi
    mkdir -p ${LOG_PATH}
    # 进程数量
    mkdir -p $LOG_PATH
    dstat -t -a  > ${LOG_PATH}/dstat.log & 
    ping  baidu.com | ts > ${LOG_PATH}/2_ping.log &
    ping  baidu.com | ts > ${LOG_PATH}/4_ping.log &
    echo "dstat and ping is started ... "
}

function stop()
{
    PROGNAME=$1
    # 进程数量
    prog_num=`ps -ef | grep $PROGNAME | grep -v grep | wc -l`
    if [ $prog_num -eq 0 ] ; then
      echo "$PROGNAME is stopped"
      return
    fi
    
    # 查出所有进程 id
    prog_ids=`ps -ef | grep $PROGNAME | grep -v grep | awk '{print $2}'`
    
    for pid in $prog_ids;
    do
        kill  $pid;
    done
    echo "stop $PROGNAME"
}

function clean()
{
    rm ${LOG_PATH} -rf
}

function check()
{
    local dpkg_num
    dpkg_num=`dpkg -l | grep $1 | wc -l`
    echo $dpkg_num
    return $?
}

function install()
{
    sudo dpkg -i $1
}

if [ $(check "dstat") -eq 0 ]; then
    echo "dstat no install, install doing ... "
    install "./deb/dstat_0.7.4-6_all.deb ./deb/python3-six_1.14.0-2_all.deb"
fi

if [ $(check "moreutils") -eq 0 ]; then
    echo "st no install, install doing ... "
    install "./deb/lib*.deb ./deb/moreutils_0.63-1_amd64.deb"
fi

case "$optype" in
    start)
        start
        ;;
    stop)
        stop "ping"
        stop "dstat"
        ;;
    clean)
      clean
        ;;
    *)
        echo "Only support start|stop|clean"
        exit 1
esac
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值