`
qindongliang1922
  • 浏览: 2187831 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
7265517b-f87e-3137-b62c-5c6e30e26109
证道Lucene4
浏览量:117629
097be4a0-491e-39c0-89ff-3456fadf8262
证道Hadoop
浏览量:126029
41c37529-f6d8-32e4-8563-3b42b2712a50
证道shell编程
浏览量:59983
43832365-bc15-3f5d-b3cd-c9161722a70c
ELK修真
浏览量:71371
社区版块
存档分类
最新评论

跟散仙学shell编程(十五)

阅读更多
上篇文章,散仙简单介绍了,如何在Linux下以shell脚本的方式与MySQL交互,本篇,我们来用shell脚本编写几个有用的实战例子



第一个脚本检测磁盘空间的top5
我们先看下du 命令统计:
[search@h1 ~]$ du -s hadoop/*
296     hadoop/bin
230156  hadoop/dddir
132     hadoop/etc
56      hadoop/include
4188    hadoop/lib
56      hadoop/libexec
472     hadoop/logs
47320   hadoop/nddir
120     hadoop/sbin
125724  hadoop/share
30336   hadoop/tmp
[search@h1 ~]$ 


查看最大的几个:
[search@h1 ~]$ du -s hadoop/* | sort -nr
230156  hadoop/dddir
125724  hadoop/share
47320   hadoop/nddir
30336   hadoop/tmp
4188    hadoop/lib
472     hadoop/logs
296     hadoop/bin
132     hadoop/etc
120     hadoop/sbin
56      hadoop/libexec
56      hadoop/include
[search@h1 ~]$ 


查看前5个,使用header命令
[search@h1 ~]$ du -s hadoop/* | sort -nr | head -5
230156  hadoop/dddir
125724  hadoop/share
47320   hadoop/nddir
30336   hadoop/tmp
4188    hadoop/lib
[search@h1 ~]$ 

除此之外,我们在加个行号:
[search@h1 ~]$ du -s hadoop/* | sort -nr | head -5 | cat -n
     1  230156  hadoop/dddir
     2  125724  hadoop/share
     3  47320   hadoop/nddir
     4  30336   hadoop/tmp
     5  4188    hadoop/lib
[search@h1 ~]$ 

利用gawk再格式化一下:
[search@h1 ~]$ du -s hadoop/* | sort -nr | head -5 | cat -n | gawk '{ print $1 "\t"  $2 "\t"  $3  }'
1       230156  hadoop/dddir
2       125724  hadoop/share
3       47320   hadoop/nddir
4       30336   hadoop/tmp
5       4188    hadoop/lib
[search@h1 ~]$ 



封装成脚本之后,把统计信息,写入一个文本里:
[search@h1 827]$ cat c.sh 



if [ $# -eq 0  ]; then

echo "请输入一个统计路径"
else





d=`date +%Y%m%d%H%M%S`

#echo $d

exec > disk$d.txt



 du -s $1  | sort -nr | head -5 | cat -n | gawk '{ print $1 "\t"  $2 "\t"  $3  }'



fi

[search@h1 827]$ sh c.sh 
请输入一个统计路径
[search@h1 827]$ sh c.sh  /home/search/hadoop/\*
[search@h1 827]$ ll
总用量 8
-rw-rw-r-- 1 search search 216 8月  28 04:28 c.sh
-rw-rw-r-- 1 search search 167 8月  28 04:29 disk20140828042921.txt
[search@h1 827]$ cat disk20140828042921.txt 
1       230156  /home/search/hadoop/dddir
2       125724  /home/search/hadoop/share
3       47320   /home/search/hadoop/nddir
4       30336   /home/search/hadoop/tmp
5       4188    /home/search/hadoop/lib
[search@h1 827]$ 


注意在脚本里面我们又使用了重定向符号,将所有的STDOUT定位到我们的一个日志文件里面,这样就方便我们查看了,每次运行都生成一个新的日志记录文件,注意在shell终端输入的*路径需要转义,否则会出现问题。



下面看下第二个有用的脚本,备份文件,散仙只作了简单的归档,按年,月,日,分钟,来进行压缩备份:
[search@h1 827]$  cat d.sh 



year=`date +%Y`
day=`date +%d`
month=`date +%m`
time=`date +%M`


dirpath="./$year/$month/$day/$time/"

mkdir -p  $dirpath




tar -zcvf   $dirpath/data.tar.gz  ./




echo "归档完毕!"
[search@h1 827]$ sh d.sh 
./
./dd/
./dd/disk20140828042921.txt
./dd/disk20140828043101.txt
./dd/disk20140828043111.txt
./dd/c.sh
./dd/m.tar.gz
./disk20140828042921.txt
./disk20140828043101.txt
./disk20140828043111.txt
./c.sh
./m.tar.gz
./2014/
./2014/08/
./2014/08/28/
./2014/08/28/49/
./d.sh
归档完毕!
[search@h1 827]$ ll
总用量 28
drwxrwxr-x 3 search search 4096 8月  28 04:49 2014
-rw-rw-r-- 1 search search  221 8月  28 04:34 c.sh
drwxrwxr-x 2 search search 4096 8月  28 04:34 dd
-rw-rw-r-- 1 search search  167 8月  28 04:29 disk20140828042921.txt
-rw-rw-r-- 1 search search    0 8月  28 04:31 disk20140828043101.txt
-rw-rw-r-- 1 search search   22 8月  28 04:31 disk20140828043111.txt
-rw-rw-r-- 1 search search  192 8月  28 04:49 d.sh
-rw-rw-r-- 1 search search  503 8月  28 04:38 m.tar.gz
[search@h1 827]$ cd 2014/
[search@h1 2014]$ ll
总用量 4
drwxrwxr-x 3 search search 4096 8月  28 04:49 08
[search@h1 2014]$ cd 08/
[search@h1 08]$ ll
总用量 4
drwxrwxr-x 3 search search 4096 8月  28 04:49 28
[search@h1 08]$ cd 28/
[search@h1 28]$ ll
总用量 4
drwxrwxr-x 2 search search 4096 8月  28 04:49 49
[search@h1 28]$ cd 49/
[search@h1 49]$ ll
总用量 4
-rw-rw-r-- 1 search search 1439 8月  28 04:49 data.tar.gz
[search@h1 49]$ tar -zxvf data.tar.gz 
./
./dd/
./dd/disk20140828042921.txt
./dd/disk20140828043101.txt
./dd/disk20140828043111.txt
./dd/c.sh
./dd/m.tar.gz
./disk20140828042921.txt
./disk20140828043101.txt
./disk20140828043111.txt
./c.sh
./m.tar.gz
./2014/
./2014/08/
./2014/08/28/
./2014/08/28/49/
./d.sh
[search@h1 49]$ ll
总用量 32
drwxrwxr-x 3 search search 4096 8月  28 04:49 2014
-rw-rw-r-- 1 search search  221 8月  28 04:34 c.sh
-rw-rw-r-- 1 search search 1439 8月  28 04:49 data.tar.gz
drwxrwxr-x 2 search search 4096 8月  28 04:34 dd
-rw-rw-r-- 1 search search  167 8月  28 04:29 disk20140828042921.txt
-rw-rw-r-- 1 search search    0 8月  28 04:31 disk20140828043101.txt
-rw-rw-r-- 1 search search   22 8月  28 04:31 disk20140828043111.txt
-rw-rw-r-- 1 search search  192 8月  28 04:49 d.sh
-rw-rw-r-- 1 search search  503 8月  28 04:38 m.tar.gz
[search@h1 49]$ 





下面看下如何获取指定磁盘的剩余空间,命令如下:
[search@h1 827]$ df
Filesystem                1K-blocks    Used Available Use% Mounted on
/dev/mapper/vg_h1-lv_root  18134344 3925876  13287280  23% /
tmpfs                        624956       0    624956   0% /dev/shm
/dev/sda1                    495844   32670    437574   7% /boot
[search@h1 827]$ df -h
Filesystem                 Size  Used Avail Use% Mounted on
/dev/mapper/vg_h1-lv_root   18G  3.8G   13G  23% /
tmpfs                      611M     0  611M   0% /dev/shm
/dev/sda1                  485M   32M  428M   7% /boot
[search@h1 827]$ df -h /dev/mapper/vg_h1-lv_root 
Filesystem                 Size  Used Avail Use% Mounted on
/dev/mapper/vg_h1-lv_root   18G  3.8G   13G  23% /
[search@h1 827]$ df -h /dev/mapper/vg_h1-lv_root | sed -n '/% \//p'
/dev/mapper/vg_h1-lv_root   18G  3.8G   13G  23% /
[search@h1 827]$ df -h /dev/mapper/vg_h1-lv_root | sed -n '/% \//p' | gawk '{ print $5}'
23%
[search@h1 827]$ 


最重要的是最后一条命令

查看系统运行时间:
[search@h1 827]$ uptime  | sed -n '/,/s/,/ /gp'  |  gawk  '{print "系统运行时间: "$3}'
系统运行时间: 1:49
[search@h1 827]$ 


查看系统空闲内存:
[search@h1 827]$ free -m | sed -n '2p' | gawk  '{print $4"m"}'
1012m
[search@h1 827]$ 



查看僵尸进程的命令:
[search@h1 827]$ ps -al | gawk  '{print $2,$4}' | grep Z
[search@h1 827]$ ps -al | gawk  '{print $2,$4}' | grep S
S PID
S 1211
S 1212
S 2014
S 2015
[search@h1 827]$ ps -al | gawk  '{print $2,$4}' | grep z
[search@h1 827]$ 


下面看下,将这些系统信息,汇集到一起,查看整体情况:
[search@h1 827]$ cat q.sh 




echo -n  "当前磁盘的剩余容量: "
df -h /dev/mapper/vg_h1-lv_root | sed -n '/% \//p' | gawk '{ print $5}'   


echo -n  "当前系统的运行时间:"
uptime  | sed -n '/,/s/,/ /gp'  |  gawk  '{print "系统运行时间: "$3}' 


echo -n  "当前系统的空闲内存: "

free -m | sed -n '2p' | gawk  '{print $4"m"}'  


echo -n "当前是否有僵尸进程存在:"
r=`ps -al | gawk  '{print $2,$4}' | grep z`


if [ -z $r  ] ; then

echo "无僵尸进程存在!"
else
echo  $r
fi

[search@h1 827]$ sh q.sh 
当前磁盘的剩余容量: 23%
当前系统的运行时间:系统运行时间: 2:04
当前系统的空闲内存: 1012m
当前是否有僵尸进程存在:无僵尸进程存在!
[search@h1 827]$ 



最后我们可以将系统信息,以文件形式,保存下来,或者保存到数据库里面,这样我们就可以轻松的通过数据库来查看,各个时间段的系统运行状况了。








0
0
分享到:
评论

相关推荐

    跟老男孩学Linux运维:Shell编程实战

    《跟老男孩学Linux运维:Shell编程实战》分为五大部分:部分为第1章~第4章,此部分着重介绍新手如何学好Shell编程。涉及的内容包括Shell编程的入门介绍、基础知识、运行原理、编程语法、编程习惯、变量知识以及变量...

    跟老男孩学Linux运维:Shell编程实战 PDF

    跟老男孩学Linux运维:Shell编程实战 PDF跟老男孩学Linux运维:Shell编程实战 PDF

    跟老男孩学Linux运维:Shell编程实战.pdf 高清 带书签

    资深运维架构实战专家及教育培训界*专家十多年的运维实战经验总结,全面系统地讲解运维工作中Shell编程所需的知识点和Shell编程的各种企业级案例。

    shell编程入门经典--LINUX与UNIX Shell编程指南 (中文pdf版)

    《LINUX与UNIX Shell编程指南》是一本专为初学者设计的shell编程教程,它深入浅出地介绍了在Linux和UNIX系统中如何使用Shell进行高效自动化任务处理。Shell编程是Linux和UNIX系统中的核心技术,它允许用户通过命令行...

    Windows Shell 编程.pdf

    Windows Shell 编程.pdf 看过一些对windows 外壳的扩展程序,在使用上一般都是直接利用windows的外壳API做一些工作,因为外壳操作需要一些比较专业的知识,因此,大部分编程人员特别是使用集成编程环境的程序人员对...

    shell编程学习资料

    Shell编程是Linux/Unix系统中不可或缺的一部分,它是一种命令行解释器,允许用户与操作系统进行交互,执行系统命令,以及编写脚本自动化任务。在本文中,我们将深入探讨Shell编程的基础知识,包括基本命令、变量、...

    Shell编程中文手册.pdf

    Shell 编程中文手册 本手册涵盖了 Shell 编程的基础知识,包括 Shell 概述、Shell 解析器、Shell 脚本入门、Shell 中的变量等。 Shell 概述 Shell 是一种命令行接口,允许用户与操作系统进行交互。学习 Shell ...

    shell编程入门教程+shell脚本专家指南+UNIX.shell编程24小时教程.rar

    《shell编程入门教程》、《shell脚本专家指南》以及《UNIX.shell编程24小时教程》会提供详尽的实例和练习,帮助你巩固所学并深化理解。 总之,Shell编程是Linux/Unix环境中不可或缺的技能,它能够提高工作效率,...

    shell编程题目练习

    shell编程题目练习,练习基本的shell编程,学习脚本语言,提高效率

    跟老男孩学Linux运维:Shell编程实战 完整版 pdf

    跟老男孩学Linux运维:Shell编程实战 完整版 pdf

    Linux与UNIX Shell编程指南.pdf

    "Linux与UNIX Shell编程指南" Linux与UNIX Shell编程指南是计算机科学领域中一本经典的指南手册,旨在帮助读者快速掌握Linux与UNIX操作系统下的shell编程技术。下面是从该书中生成的相关知识点: 1. Shell概述 ...

    高级shell编程 第五部分 高级shell编程技巧(共5部分)

    在“高级shell编程”的第五部分,我们探讨了五个关键章节,涵盖了高级shell编程技巧,这对于任何想要提升在Linux系统中自动化任务能力的IT专业人士来说都是不可或缺的知识。以下是对每个章节内容的详细阐述: 第25...

    绝版经典 LINUX与UNIX SHELL编程指南 PDF 高清版 [16.3M]

    学完本书后,你将成为一名shell编程高手。 内容简介 本书共分五部分 ,详细介绍了SHELL编程技巧,各种UNIX命令及语法,还涉及了UNIX的文字处理以及少量的系统管理问题。本书内容全面,文字简洁流畅,适合SHELL编程...

    Windows Shell 编程指南与实例

    《Windows Shell 编程指南与实例》是一本深入探讨Windows操作系统壳层编程技术的专业书籍。在Windows系统中,Shell指的是用户界面,它为用户提供与操作系统交互的环境,包括桌面、开始菜单、快捷方式等。Shell编程则...

    UNIX命令及SHELL编程

    这是一套完整的Unix培训教材,包括Unix常用命令及SHELL编程基础与高级技巧,PDF格式,共30个文件。另有2个Word文档。包内文件清单如下: 01_Shell-文件安全与权限.PDF 02_Shell-使用find和xargs.PDF 03_Shell-...

    Shell编程高级进阶系列视频.zip

    13Linux下Shell编程之While case演练 14Linux下Shell编程之While case演练 15Shell编程之函数及脚本案例讲解 16Shell编程之函数及脚本案例讲解 17Linux下Shell编程FIND、SED命令实战 18Linux下Shell编程FIND、SED...

    Unix Shell Shell编程

    6本pdf及chm的shell 编程的书 6本pdf及chm的shell 编程的书 6本pdf及chm的shell 编程的书 6本pdf及chm的shell 编程的书 6本pdf及chm的shell 编程的书

    shell编程学习文档

    Shell学习的好帮手Shell学习的好帮手Shell学习的好帮手Shell学习的好帮手Shell学习的好帮手

    shell demo及编程pdf

    **Shell编程介绍** Shell编程是Linux/Unix操作系统中的一种脚本语言,用于自动化日常任务,交互式地控制操作系统,以及实现系统级别的程序间交互。它提供了命令行接口(CLI)来执行各种系统命令,使用户能够高效地...

Global site tag (gtag.js) - Google Analytics