一些shell脚本实例】的更多相关文章

概述 看多shell脚本实例自然就会有shell脚本的编写思路了,所以我一般比较推荐看脚本实例来练习shell脚本.下面分享几个shell脚本实例. 1.监测Nginx访问日志502情况,并做相应动作 假设服务器环境为lnmp,近期访问经常出现502现象,且502错误在重启php-fpm服务后消失,因此需要编写监控脚本,一旦出现502,则自动重启php-fpm服务. #场景:#1.访问日志文件的路径:/data/log/access.log#2.脚本死循环,每10秒检测一次,10秒的日志条数为3…
概述 读书百遍其义自见,shell脚本也是,只要例子看得多了,自然就知道怎么写了.这里主要整理了20几个例子,因为内容比较多,所以分了几次来做介绍了.下面的实例最好先自己思考怎么去实现,然后再看下实现的方式,答案不是标准的,也存在一些可以继续完善的地方. 1.文件以日期命名,并写入磁盘使用情况 #!/bin/bash ##################################################文件以日期命名,并写入磁盘使用情况#######################…
shell脚本监控网站并实现邮件.短信报警shell进程监控脚本(发送邮件报警)Shell脚本监控服务器在线状态和邮件报警的方法 http://www.jbxue.com/jb/shell/ 11. #!/bin/bash a="/tmp/test.log" while [[ -f $a ]]; do sleep 1; size=`ls -lrt $a | cut -d " " -f 5` echo $size if [ $size -ge 1024 ]; then…
备注:一些与传递给shell的参数相关的变量:$# 命令行参数的个数$? 调用命令的返回值$$ 当前进程的进程号$! 最后一个后台命令的进程号$0 命令行的第一个参数,也就是命令名$n 命令行的第n个参数,如果要取超过9个参数${n}$* 所有的命令行参数,等于("$1 $2...""$@" 所有的命令行参数,等于("$1" "$2"...)$_ 前一个命令的最后一个命令行参数   1.     写一个脚本,利用循环计算10的…
shell脚本能帮我们简化linux下的一些工作,现在有个需求,把TMPA文件夹下大于2000B的文件都移动到TMPB下 #! /bin/bash function movefiles() { ` do ] then mv $"/"$file fi done } movefiles "/home/jimmyxu/TMPA" "/home/jimmyxu/TMPB" 脚本很简单,使用for循环遍历第一个输入路径下的文件,使用stat获取文件的属性值…
一. 什么是shell 脚本时一种解释性语言: shell脚本保存执行动作: 脚本判定命令的执行条件 脚本来实现动作的批量执行.二.如何创建 vim  test.sh     ##shell脚本一般都是以.sh结尾三.执行方法  1.sh  test.sh              ##不执行开头的的命令  2.chmod +x  test.sh    /mnt/test.sh             ##执行的时候会先执行以#开头的第一句 四.脚本的调示  sh  -x  test.sh  …
今天我给大家分享shell 安装mysql 多机部署的实例,本次实验是基于各个主机的公钥已经配置好了,如果还不会推送公钥的同学,可以看看我以前写的文章,那里面有写推公钥的实例,mysql 多机部署一般有两种办法,一种是远程ssh 安装,一种是将脚本推送到服务器本地安装,今天给大家分享的是ssh远程安装,回头了本地安装的方法我也给大家分享下. #!/usr/bin/bash while read ip do { #yum 配置yum源 ssh root@ip "rm -rf /etc/yum.re…
1.9.1 实例需求 用户在进行Linux系统管理的过程中,经常需要用到查看进程的信息.用户的信息等常用的功能.本例针对这一需求,使用shell编程实现基本的系统管理 功能.通过本程序,可以按照要求实现查看进程信息.查看当前登录系统的用户信息等功能.程序主界面颜色可以更改,也可以显示帮助信息.1.9.2 系统设计        根据需求,首先考虑到界面的美观性,将主界面设计为菜单形式.个系统管理功能作为其中的一个菜单项.当用户选择某项功能后,则执行相应的代码段完成功能并输出.输出结束后再返回主菜…
1.传给脚本一个参数:目录,输出该目录中文件最大的,文件名和文件大小 #!/bin/bash if [ $# -ne 1 -o ! -d $1 ];then echo "Args is error." exit 3 fi LC=`du -a $1 | wc -l` for I in `seq $LC` ;do size=`du -a $1 | sort -nr | head -$I | tail -1 | awk '{print $1}'` filename=`du -a $1 | s…
我们实验室有台服务器,博士们在服务器上跑MATLAB,基本都是4核都是超过95%的CPU占用,想了个恶作剧的shell 定时kill掉MATLAB程序,是不是很邪恶啊,哈哈~~~  不过我只是干过一次,因为老伯们也不容易啊,屌丝何苦为难屌丝... 废话不多说了上脚本! 找出CPU占用超过90%的MATLAB进程,grep -v 去掉"grep"进程 pids=`ps aux|grep "MATLAB"|grep -v "grep"|awk '{i…
1.程序流程控制实例 程序流程控制,实际上就是改变程序的执行顺序.程序在执行过程中若流程被改变,就可能导致输出不同,因此利用这一特性就能够实现程序执行结果的控制.程序流程控制可分为“选择”和“循环”这两类,在需要根据实际需求的不同实现不同的输出时,就可以改变程序的执行流程. (1)for循环语句 基于for语句的循环,基于继续执行循环或者结束循环的方式.在for执行命令前,其会先检查所要执行的列表中所指定的值是否还有未使用的,若有未使用的就赋值并执行列表,直到列表中的值全部都使用过后才退出循环.…
在生产环境中,我们时常要注意主机的各种硬件状态,如果是规模较大的服务集群zabbix等健康工具当然好用,如果只是一些小规模的服务主机,shell就会表现的更灵活,也更适用,今天就和大家分享一个系统巡检脚本! #!/bin/bash function system(){ echo "#########################系统信息#########################" OS_TYPE=`uname` OS_VER=`cat /etc/redhat-release`…
http://bbs.chinaunix.net/thread-3580033-1-1.html shell游戏收集贴 #!/bin/bash # Tetris Game #APP declaration APP_NAME="${0##*[\\/]}" APP_VERSION="1.0" #颜色定义 cRed= cGreen= cYellow= cBlue= cFuchsia= cCyan= cWhite= colorTable=($cRed $cGreen $cY…
在群里也混了不少时间了.总结一些实例 #统计QQ消息里面某个用户改名字的记录# awk -f# 聊改名字记录#特殊例子 例如#2013-11-28 9:23:56 北京-AA-Vip<123456789@qq.com>#2013-11-28 9:23:42 中山-BB(10570765) /^[-]+ [-:]+ [<(].*[>)] ?$/{ next } /^[--]+ [-:]+ .*[<(].*[>)] ?$/{ QQ=gensub(/^[--]+ [-:]+…
1.上次写了一个脚本我那次考虑不是很周全,这次我将脚本改动了一下,这次是判断三次, 希望关注我的人可以经常交流哈.下面我写上代码. #!/usr/bin/bash while read ip do fail_count=0 for count in {1..3} do ping -c1 -W1 $ip &>/dev/null if [ $? -eq 0 ];then echo "$ip ping is ok..." break else echo "$ip pi…
#!/usr/bin/bash #用途:跟踪网页是否有更新 if [ $# -ne 1 ];then echo -e "$Usage $0 URl " exit fi first_time=0 #非第一次运行这个脚本 if [ ! -e "last.html" ] ;then first_time=1 fi curl $1 -o recent.html #下载静态页面 if [ $first_time -ne 1 ];then change=$(diff -u la…
1,先通过ssh-keygen 生成公钥,然后将公钥推送到各个主机ssh-copy-id web1|ip 2简单的代码实现 #!/usr/bin/bash trap "" HUP INT OUIT TSTP#这个是linux的捕捉信息,这句话的意思是有这几个捕捉信号了就什么都不做 web1=192.168.234.137 web2=192.168.234.145 clear while : do cat <<-EOF 1. web1 2. web2 EOF #read -p…
1,磁盘使用警告并发送邮件 #!usr/bin/bash #df -Th|grep '/$' 这个是获取内存使用的那一条记录 #后面两句是获取内存的使用率 disk=`df -Th|grep '/$' |awk '{print $(NF-1)}'|awk -F"%" '{print $1}'` mail_user=natasha if [ $disk -ge 80 ];then echo "`date +%F-%H` disk:${disk}% "|mail -s…
在 if 语句里面,你可以使用另外一个 if 语句.只要你能逻辑管理 你就可以使用多层嵌套. 以下是一个测试闰年的例子: #!/bin/bash # This script will test if we're in a leap year or not. year=`date +%Y` if [ $[$year % 400] -eq "0" ]; then      echo "This is a leap year.  February has 29 days."…
1.模拟linnux登录shell #/bin/bashecho -n "login:" read nameecho -n "password:"read passwdif [ $name = "cht" -a $passwd = "abc" ];thenecho "the host and password is right!"else echo "input is error!"fi…
练习一:获得连通主机的ip和hostname1.脚本编写 vim  checkhost.sh #!/bin/bashAuto_conn(){/usr/bin/expect << EOFset timeout 2spawn ssh root@$1 $2expect {"yes/no" {send "yes\r";exp_continue }"password" {send "westos\r" }}expect eo…
练习题一:对已经存在的用户做密码的修改等操作 vim  user_ctrl.sh                 ##进行如下编写 #!/bin/bashShow(){        read -p "请输入您想操作的用户名或输入exit退出:" User        [ "$User" = "exit" ]&&{                echo bye!!                exit        }||{…
[Sat Feb 27 17:51:36 1038 /dev/pts/0 192.168.2.250 ~/sh]#cat matrix blue="\033[0;34m" brightblue="\033[1;34m" cyan="\033[0;36m" brightcyan="\033[1;36m" green="\033[0;32m" brightgreen="\033[1;32m"…
http://bbs.51cto.com/thread-594667-1.html script使用注意事项输入1: [root@-shiyan rec]# cat record1 #!/bin/bash #Filename:Record.sh dir=/tmp/rec read -p "Please input the session filename: " filename sesfile="$dir/$filename.session" logfile=&qu…
1. 统计的对象words.txt,每个单词占一行(从简考虑了~) zjd@ubuntu:~/test$ cat word.txt used this count mysql count this used mysql linux this redis apple android redis apple   2. 统计每个单词的频率 方法1: zjd@ubuntu:~/test$ cat word.txt |awk '{a[$0]++}END{for(i in a) print i"="…
#!/usr/bin/bash [ -f /etc/init.d/functions ] && . /etc/init.d/functions array=( http://www.wosoquan.com http://www.taobao.com http://www.baidu.com http://192.168.1.110 http://192.168.1.18 ) curl_ip(){ wget -T 5 -t 2 --spider $1 &>/dev/null…
统计2018/8/6 PV量 grep "06/Aug/2018" access.log|wc -l 统计当天8:00 到9:00的PV awk '$4>="[06/Aug/2018:21:59:57" && $4<="[06/Aug/2018:24:00:00" {print $0}' access.log|wc -l 统计2018年8月6日 一天内访问最多的10个IP(top10) grep '06/Aug/201…
#!/usr/bin/bash PS3="Your choice is: [10 for quit]" #检查是那个系统 os_check() { if [ -e /etc/redhat-release ]; then REDHAT=`cat /etc/redhat-release |cut -d' ' -f1` else DEBIAN=`cat /etc/issue |cut -d' ' -f1` fi if [ "$REDHAT" == "CentOS…
Array实现TCP的链接状态 #!/usr/bin/bash declare -A status type=`ss -an | grep :80|awk '{print $2}'` for i in $type do echo let status[$type]++ done for j in ${!status[@]} do echo "$j: ${status[$j]}" done while实现批量创建用户 #!/usr/bin/bash while read line do…
#!/usr/bin/bash while read line #读取一行结果 do if [ ${#line} -eq 0 ];then #如果有空行的话就跳过这次循环 contiune fi user=`echo $line|awk '{print $1}'` pass=`echo $line|awk '{print $2}'` id $user &>/dev/null if [ $? -eq 0 ];then echo "user $user already exists&q…