2007-12-13 07:51:40
Shell程序实例集锦一
 
 
 前言:下面这些hell实例都是自己写的或者用过的一些Shell小程序。整理整理。    ——Ajian

1、删除B文件中和A文件相同的内容

#!/bin/sh
# Ajian
for file in `cat a.list | cut -d. -f1`
do
sed -i '/'$file'/d' b.list
done
 
2、根据文件名的前四位创建二级目录
#!/bin/sh
#Ajian
for dir in `cat dir.list`
do
dir1=`echo $dir | cut -c1-2`
dir2=`echo $dir | cut -c3-4`
if [ ! -d "$dir1/$dir2" ]; then
       mkdir -p "$dir1/$dir2"
fi
done

3、查看网卡流量
#!/bin/bash
#netflood
#Ajian
while : ; do
       time=`date +%m"-"%d" "%k":"%M`
       day=`date +%m"-"%d`
       rx_before=`ifconfig eth0|sed -n "8"p|awk '{print $2}'|cut -c7-`
       tx_before=`ifconfig eth0|sed -n "8"p|awk '{print $6}'|cut -c7-`
       sleep 2
       rx_after=`ifconfig eth0|sed -n "8"p|awk '{print $2}'|cut -c7-`
       tx_after=`ifconfig eth0|sed -n "8"p|awk '{print $6}'|cut -c7-`
       rx_result=$[(rx_after-rx_before)/256]
       tx_result=$[(tx_after-tx_before)/256]
       echo "$time Now_In_Speed: "$rx_result"kbps Now_OUt_Speed: "$tx_result"kbps"
       sleep 2
done

4、系统状况监控
#!/bin/sh
#statistic.sh
#Ajian
IP=192.1681.41
top -n 2| grep "Cpu" >>./data/cpu.txt
free -m | grep "Mem" >> ./data/mem.txt
df -k | grep "sda1" >> ./data/drive_sda1.txt
#df -k | grep sda2 >> ./data/drive_sda2.txt
df -k | grep "/mnt/storage_0" >> ./data/mnt_storage_0.txt
df -k | grep "/mnt/storage_pic" >> ./data/mnt_storage_pic.txt
time=`date +%m"."%d" "%k":"%M`
connect=`netstat -na | grep "172.16.20.5:80" | wc -l`
echo "$time  $connect" >> ./data/connect_count.txt

5、系统服务及系统状况分析

#!/bin/sh
#server
#################################
#modify by ajian
#function: It is convenient to restart some servers and reduce the wasted time.
#DATE:  2007-7-2
#################################
#路径配置区
APACHEPATH=""
SMB_LOCAL_PATH1=""
SMB_REMOTE_PATH1=""
SMB_LOCAL_PATH2=""
SMB_REMOTE_PATH2=""
#################################
#应用配置区
SMBUSER=""
SMBPASS=""
SMB_UID=
SMB_GID=
#################################
case $1 in
       "apache")
               if [ $2 = "start" ]
               then
                       echo "starting apache ..."
                       $APACHEPATH/apachectl start
                       echo "apache is started."
                       pidof httpd
               elif [ $2 = "stop" ]
               then
                       echo "stopping apache ..."
                       $APACHEPATH/apachectl stop
                       echo "apache is stopped."
               elif [ $2 = "restart" ]
               then
                       echo "restarting apache ..."
                       $APACHEPATH/apachectl stop
                       sleep 5
                       $APACHEPATH/apachectl start
                       echo "apache is restarted."
                       pidof httpd
               else
                       echo "apache's $2 is error."
               fi
               ;;
       "smb")
               if [ $2 = "remount" ]
               then
                       echo "remounting smbfs..."
                       umount -f $SMB_LOCAL_PATH1
                       umount -f $SMB_LOCAL_PATH2
           echo "umount is finished."
                       sleep 5
                       mount -t smbfs -o username=$SMBUSER,password=$SMBPASS,ui
d=$SMB_UID,gid=$SMB_GID $SMB_REMOTE_PATH1 $SMB_LOCAL_PATH1
                       mount -t smbfs -o username=$SMBUSER,password=$SMBPASS,ui
d=$SMB_UID,gid=$SMB_GID $SMB_REMOTE_PATH2 $SMB_LOCAL_PATH2
                       echo "mount is finished."
                       df -h
               elif [ $2 = "mount" ]
               then
                       mount -t smbfs -o username=$SMBUSER,password=$SMBPASS,ui
d=$SMB_UID,gid=$SMB_GID $SMB_REMOTE_PATH1 $SMB_LOCAL_PATH1
                       mount -t smbfs -o username=$SMBUSER,password=$SMBPASS,ui
d=$SMB_UID,gid=$SMB_GID $SMB_REMOTE_PATH2 $SMB_LOCAL_PATH2
                       echo "mount is finished."
                       df -h
               else
                       echo "smb's $2 is error."
               fi
               ;;
       "all")
               echo "restart apache and remount..."
               $APACHEPATH/apachectl stop
       sleep 5
               umount -f $SMB_LOCAL_PATH1
               umount -f $SMB_LOCAL_PATH2
               sleep 5
               mount -t smbfs -o username=$SMBUSER,password=$SMBPASS,uid=$SMB_U
ID,gid=$SMB_GID $SMB_REMOTE_PATH1 $SMB_LOCAL_PATH1
               mount -t smbfs -o username=$SMBUSER,password=$SMBPASS,uid=$SMB_U
ID,gid=$SMB_GID $SMB_REMOTE_PATH2 $SMB_LOCAL_PATH2
               echo "mount is finished."
               df -h
               $APACHEPATH/apachectl start
               echo "apache is restarted."
               sleep 5
               pidof httpd
               ;;
   "status")
       if [ $2 = "grather" ]
       then
           echo "Gather the status of the computer ....."
           /movivi/status.sh
           echo "Gather is finished."
       elif [ $2 = "analyze"  ]
       then
           echo "analyze the status.ch ......"
           /movivi/analyze.sh
           cat /movivi/data/sumary.txt
       fi
       ;;
       *)
               echo "The method of using the script."
               echo ""
       echo "  server apache stop      means:  关闭apache."
               echo "  server apache start     means:  启动apache."                
               echo "  server apache restart   means:  重启apache."
               echo "  server remount            means:  关闭Mount点再挂载."
       echo "  server mount              means:  直接挂载Mount点."
               echo "  server all                    means:  Include all of above."
               echo "  server status gather     means:  收集系统信息."
       echo "  server status analyze    means:  分析处理并显示系统信息."
               echo "  "
               echo ""
               ;;
esac

6、服务器采样程序(主要用于邮件发送报警 格式问题)

#!/bin/sh
# Create By : Ajian
# file: watch.sh
# Time: 2007-10-31
############################
INPUT=/root/message
TIME=`date +%m"."%d" "%k":"%M`
echo "###################################################################################################" >> $INPUT
echo "###################################################################################################" >> $INPUT
echo "采样时间点: $TIME" >> $INPUT
echo "////////////////////////////////////" >>  $INPUT
echo "CPU使用情况:" >> $INPUT
top -n 3 -b  | grep "Cpu" | awk '{print $1 $2 $3 $4 $5}'>> $INPUT
echo "////////////////////////////////////" >>  $INPUT
echo "内存使用情况:(单位M)" >> $INPUT
free -m >> $INPUT
echo "////////////////////////////////////" >>  $INPUT
echo "服务器连接数:" >> $INPUT
echo "Web连接     :`netstat -na | grep ":80" | wc -l`" >> $INPUT
echo "TIMEWAIT连接:`netstat -na | grep ":80" | grep "TIME_WAIT" | wc -l`" >> $INPUT
echo "数据库连接:`netstat -na | grep "3306" | wc -l`" >> $INPUT
echo "////////////////////////////////////" >>  $INPUT
echo "Apache 进程数:`ps aux | grep httpd | wc -l`" >> $INPUT
echo "注:采样十分钟取一次,一小时发送一次" >> $INPUT

Shell程序实例集锦一的更多相关文章

  1. 学习Shell脚本编程(第4期)_在Shell程序中的使用变量

    变量的赋值 变量的访问 变量的输入 4.1 变量的赋值     在Shell编程中,所有的变量名都由字符串组成,并且不需要对变量进行声明.要赋值给一个变量,其格式如下: 变量名=值  注意: 等号(= ...

  2. 学习Shell脚本编程(第3期)_在Shell程序中使用的参数

    位置参数 内部参数 如同ls命令可以接受目录等作为它的参数一样,在Shell编程时同样可以使用参数.Shell程序中的参数分为位置参数和内部参数等. 3.1 位置参数 由系统提供的参数称为位置参数.位 ...

  3. 学习Shell脚本编程(第2期)_编写修改权限及执行Shell程序的步骤

    编写Shell程序 执行Shell程序 Shell程序有很多类似C语言和其他程序设计语言的特征,但是又没有程序语言那样复杂.Shell程序是指放在一个文件中的一系列Linux命令和实用程序.在执行的时 ...

  4. 4、在Shell程序中的使用变量

    学习目标变量的赋值变量的访问变量的输入 12-4-1 变量的赋值在Shell编程中,所有的变量名都由字符串组成,并且不需要对变量进行声明.要赋值给一个变量,其格式如下:变量名=值.注意:等号(=)前后 ...

  5. 3、在Shell程序中使用的参数

    学习目标位置参数内部参数 如同ls命令可以接受目录等作为它的参数一样,在Shell编程时同样可以使用参数.Shell程序中的参数分为位置参数和内部参数等. 12-3-1 位置参数由系统提供的参数称为位 ...

  6. 2、编写/修改权限及执行Shell程序的步骤

    学习目标编写Shell程序执行Shell程序 正文Shell程序有很多类似C语言和其他程序设计语言的特征,但是又没有程序语言那样复杂.Shell程序是指放在一个文件中的一系列Linux命令和实用程序. ...

  7. 在C#中实现截获shell程序的输出

    在Windows环境下的所谓shell程序就是dos命令行程序,比如VC的CL.exe命令行编译器,JDK的javac编译器,启动java程序用的java.exe都是标准的shell程序.截获一个sh ...

  8. 使用 Bluemix™ Live Sync 高速更新 Bluemix 上执行的应用程序实例

    假设您要构建 Node.js 应用程序,那么能够使用 IBM® Bluemix® Live Sync 高速更新 Bluemix 上的应用程序实例,并像在桌面上进行操作一样进行开发,而无需又一次部署.执 ...

  9. flask实战-个人博客-使用工厂函数创建程序实例 --

    使用工厂函数创建程序实例 使用蓝本还有一个重要的好处,那就是允许使用工厂函数来创建程序实例.在OOP(Object-Oriented Programming,面向对象编程)中,工厂(factory)是 ...

随机推荐

  1. C语言备忘录——取余与取模

    前几天,一个小姐姐问我取余和取模有什么区别,我当时第一反应就是二者是一样的,但是小姐姐咬死说不一样.我去百度了一下还真的不一样.脑壳疼,我当初误导了多少人.所以为了帮助我记忆也为了帮助预防我误人子弟 ...

  2. Windows按键消息—虚拟键码(转)

    源地址:http://c.biancheng.net/cpp/html/1253.html 虚拟键码保存在WM_KEYDOWN.WM_KEYUP.WM_SYSKEYDOWN和WM_SYSKEYUP消息 ...

  3. 从PC厂商狠抓粉丝经济看,春天将至?

    10月中旬,市场研究机构IDC发布的全球三季度PC出货量报告显示,第三季度全球个人电脑出货量总计6740万台,比去年同期下降0.9%.似乎这一数据的发布,依旧在证明着PC市场的颓势.但在这样的大背景下 ...

  4. [JZOI]1251.收费站[二分][最短路]

    Description 在某个遥远的国家里,有n个城市.编号为1,2,3,--,n. 这个国家的政府修建了m条双向的公路.每条公路连接着两个城市.沿着某条公路,开车从一个城市到另一个城市,需要花费一定 ...

  5. 032-PHP中关于数组排序的usort()函数

    <?php function re($a, $b) { return ($a < $b) ? 1 : -1; } $x = array(1, 3, 2, 5, 9); usort($x, ...

  6. 106-PHP查看类成员属性

    <?php class mao{ //定义猫类 public $age; //定义多个成员属性 protected $weight; private $color; } $mao1=new ma ...

  7. 洛谷 P2747 Canada Tour 周游加拿大 动态规划

    Description 你赢得了一场航空公司举办的比赛,奖品是一张加拿大机票.旅行在这家航空公司开放的最西边的城市开始,然后一直自西向东旅行,直到你到达最东边的城市,再由东向西返回,直到你回到开始的城 ...

  8. 雷火神山直播超两亿,Web播放器事件监听是怎么实现的?

    Web播放器解决了在手机浏览器和PC浏览器上播放音视频数据的问题,让视音频内容可以不依赖用户安装App,就能进行播放以及在社交平台进行传播.在视频业务大数据平台中,播放数据的统计分析非常重要,所以We ...

  9. 5分钟搞懂:session与cookie

    http是无状态协议 无状态协议的意思是服务端与客户端不会记录任何一次通信的信息.诺兰有一部电影<记忆碎片>,说的是一个有"短期记忆丧失症"的人根据自己支离破碎的记忆来 ...

  10. js对象等号赋值的bug

    var a = {n: 1}; var b = a; a.x = a = {n: 2}; console.log(a.x); console.log(b.x); 有道题是这样的,觉得很奇葩,分析一下 ...