嵌入式Linux系统上提取有用的系统信息

下面的脚本可以一次性获取嵌入式Linux系统上有用的系统信息,包括网络信息,存储信息,环境信息等等。

它同时支持周期性运行,可以用于系统监测,比如检查内存泄露等。

注:由于我用的busybox中的top不支持-n 选项,因此使用了后台运行,一定时间后再杀死top进程的办法。

top 命令如果支持-n 选项就非常简单了。

使用方法:


$ sysinfo.sh -h
usage: sysinfo.sh [options]
    show system information.
    Without option, it will show all information.
options:
    -c <count> : show how many times.
    -d: show disk information.
    -e: show environment.
    -g: show general information.
    -i <interval>: show information every <interval> seconds.
    -m: show memory information.
    -n: show network information.
    -p: show process information.
    -r: show release information.
    -h: show help


#!/bin/sh

trap my_exit SIGINT
#---------------------------- variables --------------------------------------------------
PROG_NAME=`basename $0`

SHOW_GENERAL=0
SHOW_DISK=0
SHOW_ENV=0
SHOW_MEM=0
SHOW_NET=0
SHOW_PROC=0

INTERVAL=-1
ALWAYS_LOOP=0
COUNT=-1

INDEX=1
NOT_SHOW_ALL=0
#---------------------------- functions --------------------------------------------------
my_exit()
{
killall top 2>/dev/null
exit 0
}

run_cmd()
{
  echo $ $*
  eval $*
  echo
}

usage() {
  cat << END
usage: $PROG_NAME [options]
    show system information.
    Without option, it will show all information.
options:
    -c <count> : show how many times.
    -d: show disk information.
    -e: show environment.
    -g: show general information.
    -i <interval>: show information every <interval> seconds.
    -m: show memory information.
    -n: show network information.
    -p: show process information.
    -h: show help

END
}

set_show_all()
{
SHOW_GENERAL=1
SHOW_DISK=1
SHOW_ENV=1
SHOW_MEM=1
SHOW_NET=1
SHOW_PROC=1
}

show_general()
{
echo "++++++++++++++++++++++++++ General +++++++++++++++++++++++++++++++++"
run_cmd cat /proc/version
run_cmd cat /proc/uptime
run_cmd cat /proc/cmdline
run_cmd hostname
run_cmd cat /proc/modules
}

show_disk()
{
echo "++++++++++++++++++++++++++ Disk ++++++++++++++++++++++++++++++++++++"
run_cmd cat /proc/mounts
run_cmd cat /proc/mtd
run_cmd df
}

show_env()
{
echo "++++++++++++++++++++++++++ Env +++++++++++++++++++++++++++++++++++++"
run_cmd env
}

show_mem()
{
echo "++++++++++++++++++++++++++ MEM +++++++++++++++++++++++++++++++++++++"
run_cmd cat /proc/vmstat
run_cmd cat /proc/meminfo
run_cmd top &
sleep 2
killall top
}

show_proc()
{
echo "++++++++++++++++++++++++++ Process +++++++++++++++++++++++++++++++++"
run_cmd ps w
}

show_net()
{
echo "++++++++++++++++++++++++++ Network +++++++++++++++++++++++++++++++++"
run_cmd ifconfig
run_cmd route -n
run_cmd cat /etc/resolv.conf
}

show_info()
{
 [ $SHOW_GENERAL -eq 0 ] || show_general
 [ $SHOW_DISK -eq 0 ] || show_disk
 [ $SHOW_ENV -eq 0 ] || show_env
 [ $SHOW_MEM -eq 0 ] || show_mem
 [ $SHOW_NET -eq 0 ] || show_net
 [ $SHOW_PROC -eq 0 ] || show_proc
}
#---------------------------- main() --------------------------------------------------
# get command line arguments
while getopts "c:degi:mnph" options; do
  case "$options" in
    c) COUNT=$OPTARG ;;
    d) SHOW_DISK=1;NOT_SHOW_ALL=1 ;;
    e) SHOW_ENV=1;NOT_SHOW_ALL=1 ;;
    g) SHOW_GENERAL=1;NOT_SHOW_ALL=1 ;;
    i) INTERVAL=$OPTARG ;;
    m) SHOW_MEM=1;NOT_SHOW_ALL=1 ;;
    n) SHOW_NET=1;NOT_SHOW_ALL=1 ;;
    p) SHOW_PROC=1;NOT_SHOW_ALL=1 ;;
    h) usage; exit 0;;
    \?) usage; exit -1;;
  esac
done
shift $((OPTIND - 1))

#if set interval and not set count, loop forever
if [ $INTERVAL -lt 0 ]; then
  INTERVAL=1
else
 if [ $COUNT -lt 0 ]; then
   ALWAYS_LOOP=1
 fi
fi

if [ $COUNT -lt 0 ]; then
  COUNT=1
fi

if [ $NOT_SHOW_ALL -eq 0 ]; then
set_show_all
fi

while [ $ALWAYS_LOOP -eq 1 ] || [ $COUNT -gt 0 ]; do
  echo "============================= SYS INFO ============================="
  echo "#$INDEX Date: `date +%Y-%m-%d_%H:%M:%S`"
  show_info
  echo "============================= SYS INFO END ========================="
  INDEX=$((INDEX + 1))
  COUNT=$((COUNT - 1))
  sleep $INTERVAL
done





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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值