`
zhengdl126
  • 浏览: 2538906 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类

shell实例脚本汇总

阅读更多

-------------------要求算出jack和tom的2科的平均分  用shell实现。
cat 1.txt
jack  huaxue   90
tom  huaxue    70
jack  shuxue    99
tom  shuxue    80

 

 

awk 很好实现  awk '{a[$1]+=$3}END{for (i in a)print i,a[i]/2}' aa

 

-----------------企业运维面试题 分享 大家看看自己会多少

 

1、在bash shell里 $0 $? $* $@ 各表示什么意思?

2、当IO出现瓶颈时,应看哪个参数,为什么?

3、怎么查看内存使用情况?看到swap使用量大时,是不是意味着物理内存已不够用?

4、在/var/log下拷贝小于100K的文件到/tmp下,如果有失败的发送邮件到,用shell/perl/python来实现。

5、简述智能DNS的工作原理及CDN的作用

6、根据下面的信息提取每个人的总分 输出到/home/total.txt
oldboy  15   98
kqzj    23   87
wodi    16   89

7、主机CPU是 2×4核 内存16G  怎么配置mysql

8、监控MYSQL复制,如出现停止、不同步时发邮件到。

9、在不影响MYSQL正常服务的情况下,如何导出MYSQL数据。

 

 

 

 

 

 

------------------------要求如下:
写一段完整的shell脚本,完成如下功能:1 查找出/home/目录下的修改时间最新的文件并把这个文件名保存在/usr/temp/temp.txt文件中;2 把/home/目录下的名称为1. tar.gz文件(假定已经存在)copy到/usr/temp目录中并解压;3 然后删除/home/目录下的2.txt文件(假定已经存在)。

脚本如下:
#!/bin/bash
cd /home/
ls -t|head -1>/usr/temp/temp.txt
cp /home/1. tar.gz /usr/temp/
cd /usr/temp
tar xvfz 1.tar.gz
yes|rm /home/aa/2.txt

还有一个方法:
#!/bin/bash
cd /home/
$1=``find . -type f -exec stat -c "%y %s %n" {} \;|sort -r|head -1|awk '{print $5}'|awk -F / '{print $2}'
echo $1 > /usr/temp/temp.txt
cp /home/1. tar.gz /usr/temp/
cd /usr/temp
tar xvfz 1.tar.gz
yes|rm /home/2.txt

在此感谢
广州-木易水瓶(407298685)提出的ls -t|head -1>/usr/temp/temp.txt
{广州}小丑鱼(422208864)得出的-t     sort by modification time

这个比我自己写的简单多了

 

 

 

--------------------------shell脚本监控mysql服务器状态

 

目的:
1.监控mysql服务器的状态
2.当发现mysql down机就自动重启mysql服务
3.重启mysql不成功,发邮件给管理员警告mysql down机

说明:mysql取用的是3306端口,知道这点我们就好去监控mysql服务状态了,我的脚本就是通过3306端口监控mysql服务的……


#!/bin/sh
cat << EOF
+--------------------------------------------------------------------------+
|                      === Welcome to LinuxTone===                         |
|-------------------------http://www.linuxtone.org------------------------ |
+-------------------------------By:hamgua----------------------------------+
EOF

PORT=`netstat -na|grep "LISTEN"|grep "3306"|awk -F[:" "]+ '{print $5}'`
MYSQLIP=`ifconfig eth0|awk '/inet/{print $2}'|cut -c 6-`
while [ `whoami` == "root" ]
do
   if [ "$PORT" == "3306" ];then
     echo "mysql is running......"
   else
     echo "restart mysql"
     /etc/init.d/mysqld restart
        if [ "$PORT" == "3306" ];then
          echo "mysql restart successful......"
        else
          echo "mysql restart failure......"
          echo "server: $MYSQLIP mysql is down,please try to restart mysql!" > /var/log/mymsg
          mail -s "warn!server: $MYSQLIP  mysql is down" hamgua\@gmail.com < /var/log/mymsg
        fi
   fi
break
done    






赋予check_mysql.sh可执行的权限
#chmod u+x /usr/local/sbin/check_mysql.sh

加入crontab,让系统五分钟检测一次mysql状态
#crontab -l
…………
*/5 * * * * /usr/local/sbin/check_mysql.sh > /dev/null 2>&1

 

 

 

 

 

 

 

 

 

------------------------------------------shell脚本检查memcache进程并自动重启

 

 

 

 

#!/bin/sh
#check memcache process and restart if down

mm_bin="/usr/local/bin/memcached"
mm_log="/home/xxx/memcached_check.log"
mm_ports=("11211" "11212")
mm_param=("-d -m 20480 -p 11211 -u www" "-d -m 256 -p 11212 -u www")
mm_count=${#mm_ports[@]}

t=$(date -d "today" +"%Y-%m-%d %H:%M:%S")
i=0
while [ $i -lt $mm_count ]
do
mm_exists=`ps -ef|grep "memcached"|grep "${mm_ports[$i]}"|grep -v grep|wc -l`

if [ "$mm_exists" == "0" ]; then
${mm_bin} ${mm_param[$i]} 2>&1 > /dev/null &
echo "${t} : ${mm_bin} ${mm_param[$i]}" >> ${mm_log}
fi

let i++
done

===============================================================

添加为自动执行:
    #crontab -e
*/10 * * * * /bin/sh /home/xxx/memcached_check.sh


系统每10分钟会自动执行memcached_check.sh

-------------------------------------------------------------
备用shell语句:

#检查mysql状态
PORT=`netstat -na | grep "LISTEN" | grep "3306" | awk '{print $4}' | awk -F. '{print $2}'`
if [ "$PORT" -eq "3306" ]

#检查mysql占CPU负载
mysql_cpu=`top -U root -b -n 1 | grep mysql | awk '{print $10}'|awk -F. '{print $1}'`
#如果mysql cpu负载大于80,则重启mysql
if [ "$mysql_cpu" -ge "80" ]

#获得相关信息
ps -ef|grep "memcached"|grep -v "grep"|wc -l
ps -ef|grep "memcached"|grep "11211"|grep -v "grep"|wc -l
ps aux|grep "memcached"|grep -v "grep"|awk '{sum+=$4;n++};END{print sum}'
ps aux|grep "memcached"|grep -v "grep"|awk '{printf $1}'

MYPORT=`netstat -na|grep "tcp"|grep "3306"|awk -F[:" "]+ '{print $5}'`
HAPORT=`netstat -na|grep "udp"|grep "694"|awk -F[:" "]+ '{print $5}'`
PING=`ping -c 5 www.linuxtone.org|awk -F, '/packets/{print $3}'|cut -c 2-|awk '{print $1}'`
DB1IP=`ifconfig eth0|awk '/inet/{print $2}'|cut -c 6-`

----------------------------------------------------------------------------
shell if语句的一些资料:
–b 当file存在并且是块文件时返回真
-c 当file存在并且是字符文件时返回真
-d 当pathname存在并且是一个目录时返回真
-e 当pathname指定的文件或目录存在时返回真
-f 当file存在并且是正规文件时返回真
-g 当由pathname指定的文件或目录存在并且设置了SGID位时返回为真
-h 当file存在并且是符号链接文件时返回真,该选项在一些老系统上无效
-k 当由pathname指定的文件或目录存在并且设置了“粘滞”位时返回真
-p 当file存在并且是命令管道时返回为真
-r 当由pathname指定的文件或目录存在并且可读时返回为真
-s 当file存在文件大小大于0时返回真
-u 当由pathname指定的文件或目录存在并且设置了SUID位时返回真
-w 当由pathname指定的文件或目录存在并且可执行时返回真。一个目录为了它的内容被访问必然是可执行的。
-o 当由pathname指定的文件或目录存在并且被子当前进程的有效用户ID所指定的用户拥有时返回真。

UNIX Shell 里面比较字符写法:
-eq 等于
-ne 不等于
-gt 大于
-lt 小于
-le 小于等于
-ge 大于等于
-z 空串
= 两个字符相等
!= 两个字符不等
-n 非空串

------------------------------------------------------------
crontab 的一些资料:

基本格式:
*  *  *  *  *  command
分  时 日  月  周  命令


第1列表示分钟1~59 每分钟用 * 或 */1 表示,*/10表示每10分钟
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令

分享到:
评论

相关推荐

    109个shell脚本合计

    本文档汇总了109个实用的Shell脚本实例,涵盖了多个应用场景,包括系统管理、网络监控、数据库备份等。下面将详细讨论其中几个关键脚本。 1. Dos攻击防范(自动屏蔽攻击IP): 这个脚本通过分析Nginx的访问日志...

    shell脚本编程学习笔记汇总

    shell脚本编程学习笔记汇总 本文档总结了 Linux shell 脚本编程的学习笔记,涵盖了 shell 脚本的定义、编写、权限、存放位置、函数、变量、IF 控制语句、命令退出状态等知识点。 一、shell脚本的定义 shell 脚本是...

    Shell 脚本编程实战100例.pdf

    从提供的文件内容来看,这是一本关于Shell脚本编程的实战教程书籍,以实例的方式教授读者如何使用Shell脚本来完成各种Linux系统运维任务。下面将详细介绍从给出的内容中能够总结出的一些Shell脚本编程知识点。 首先...

    shell脚本编程:一键批量查询多台服务器集群上的日志.pdf

    本篇文档主要介绍了一个`Shell`脚本实例,用于一键查询分布在多台服务器上的日志,假设所有服务器之间已经设置了免密登录。 首先,这个脚本的目标是为了避免手动登录每台服务器进行日志检查。在50台服务器的情况下...

    shell必学必会命令

    ### Shell 必学必会命令 #### 一、Shell 快速入门 ##### 1.1 运维 运维(Operation and Maintenance, O...以上内容是Shell学习的基础与进阶知识汇总,通过掌握这些内容,可以更好地进行运维自动化、脚本编写等工作。

    Learning Linux Shell Scripting.pdf

    - **日志分析工具**:编写用于解析和汇总日志文件的 Shell 脚本,帮助管理员快速定位问题。 ### 结论 通过学习《Learning Linux Shell Scripting》这本书,读者不仅可以掌握 Shell 脚本的基本语法和编程技巧,还能...

    AWK编程实例指南.rar_AWK ns2_awk_awk unix.shell_awk编程实例

    在Shell脚本中,AWK可以用来处理复杂的数据操作,而无需编写完整的程序。 "awk编程实例"意味着这个压缩包特别关注AWK的实际应用,提供了一系列的编程示例,帮助用户理解和掌握AWK的使用技巧。这些实例可能涵盖简单...

    Hadoop之MapReduce编程实例完整源码

    学习完此例子后,你能掌握MapReduce基础编程,及如何编译Java文件,打包jar文件,编写shell执行脚本等。后续学习还可以参看本人的CSDN博客,如有问题也可以在线为你解答,不过本人也学习Hadoop不足一年,现学现卖...

    Shell脚本中awk指令的用法

    在Shell脚本中,awk是一种强大的文本分析工具,它能够处理和解析文件中的数据,尤其在处理结构化数据时非常有效。awk的工作原理是逐行读取输入文件,然后对每一行执行用户定义的指令。下面我们将深入探讨awk指令在...

    shell脚本三剑客.docx

    sed 命令是利用脚本来处理文本文件,可以依照脚本的指令来处理、编辑文本文件,主要用来自动编辑一个或多个文件、简化对文件的反复操作、编写转换程序等。 sed 实例选项介绍: * `-n`:静默输出,一般和 `p` 一起...

    日常使用脚本总结汇总,作为存档

    本文将深入探讨脚本的使用,并结合"日常使用脚本总结汇总"这个主题,分享一些常见的脚本知识和应用实例。 首先,我们要理解什么是脚本。脚本是一种非编译型的编程语言,如Bash、Python、JavaScript等,它们通常用于...

    shell script语言教程

    - **Shell Script实例**:提供实际应用中的Shell Script示例,帮助理解具体应用场景。 - **grep简介**:介绍grep命令的基本用法和正则表达式的基础知识。 #### 七、参考资料 推荐一些关于Shell Script的书籍和其他...

    利用Shell解析处理XML的方法汇总

    前言 前几天在干活的时候遇到一个需要解析处理xml文件的一个需求,当时考虑到逻辑比较复杂,因此用...因此不得已,研究了一波用shell脚本解析xml的方法。 说到底,shell还是不太适合处理复杂的逻辑,但是对于一些简单

    bat/cmd批处理连接SqlServer数据库查询脚本

    作者通过实例向读者展示了脚本编写、数据库连接、命令执行和结果处理等多个方面的知识。这不仅对从事Windows系统管理和数据库维护的IT人员具有实际指导意义,也对于初学者来说是一个很好的学习样本。

    Shell获取字符串长度的多种方法总结

    我们在日常工作中,对于求字符串操作在shell脚本中很常用,实现的方法有很多种,下面就来给大家归纳、汇总了求字符串的几种可能方法,话不多说了,来一起看看详细的介绍吧。 方法如下: 【方法一】:利用${#str}来...

    Rails相关电子书汇总二

    2. "Classic Shell Scripting.rar" - 这可能是一本关于经典Shell脚本编程的教程,虽然直接与Rails框架无关,但在Unix/Linux环境下进行Web开发时,熟悉Shell脚本可以帮助开发者更高效地管理文件、自动化任务,甚至...

    VBS例子汇总

    这个"VBS例子汇总"包含了丰富的VBS脚本实例,可以帮助用户深入理解和掌握VBS的使用。 VBS脚本的特点在于其简单易学、语法直观。在描述中提到的教程中,你可能会学习到以下关键知识点: 1. **基本语法**:VBS使用缩...

    Linux知识精讲 系列汇总.zip

    8. **Shell脚本编程**:Bash Shell是Linux中最常见的Shell,编写Shell脚本可以自动化重复任务,提高工作效率。学习条件语句、循环、函数和变量等基本概念是编写脚本的基础。 9. **系统日志与监控**:了解`dmesg`...

    jmetervmss

    4. **JMeter与VMSS的集成**:学习如何在Shell脚本中使用Azure SDK或CLI命令来启动、停止或扩展VMSS实例,并在这些实例上分发JMeter测试。 5. **分布式测试**:了解JMeter的分布式测试模式,如何配置服务器和代理,...

Global site tag (gtag.js) - Google Analytics