精华内容
下载资源
问答
  • 资源名称:Linux Shell脚本学习基础视频资源目录:【】11a00d99b60c4e2eba3440b8aa3a6bdd【】linux_shell脚本编程_01认识shell,如何编写shell脚本和执行【】linux_shell脚本编程_02vivim简单的常用操作【】linux_...
  • Shell脚本编程高清视频教程35集,更多高清资源需求请关注我联系我
  • shell脚本视频学习1

    2019-06-18 14:10:00
    练习1:使用shell脚本,输出当前所在的目录 练习2:计算/etc目录下有多少个文件,用shell脚本实现 ls -l--->数一下, ls -l|wc -l (1)实现统计任何指定目录下的文件个数,加入输入界面 (2)...

     

     一。知识点:变量,参数传递

     练习1:使用shell脚本,输出当前所在的目录

     

    练习2:计算/etc目录下有多少个文件,用shell脚本实现

    ls -l--->数一下,

    ls -l|wc -l

    (1)实现统计任何指定目录下的文件个数,加入输入界面

     

    (2)直接通过执行命令中传入参数

    脚本:

    执行后:

     

     二。重定向

    正确的:

    错误的:

    命令

    脚本

     

    三。分支,循环

    1.判断/root目录是否Wie空

    涉及知识点:字符串间的判断: ==字符串是否相等,!=是否不相等

     

    2.练习:通过用户输入任意目录判断是否为空

     

     3.判断用户输入的用户名和密码是否为admin 123456,如果是则提示登录成功,否则提示失败

     

    4.输入数字,判断是否大于0,如果大于0则将该数字-1并输出,否则+1输出

    变量运算的多种写法

    -eq/-ne/-gt/-ge/-lt/-le

    ((i++))  ((i+=1))  i=$[$i+1]  let i=i+1  i=$(($i+1))

    s=$(($s+$i))  s=$[$s+$i]  ((s=$s+$i))

     

    5.判断用户输入的目录是否存在,如果存在则统计目录下的文件个数,否则提示用户该目录不存在

    test 参数 变量名---->测试文件的状态

    -e 表示文件是否存在

    -f 表示文件是否存在且为文件

    -d 表示文件名是否存在且为目录

    -r 可读

    -w 可写

    -x 可执行

     

     

    6.if...elif...else练习

    判断学生的成绩,大于90-100提示优秀,80-90之间提示良好,70-80之间则提示一般,60-70之间提示及格。其他则提示不及格

     

     

    7.判断用户输入的内容是否为空,为空则提示,不为空则判断是否为目录,不为目录则判断是否为文件,否则提示错误信息

    -r  -r filename  文件是否存在且可读

    -w  -w filename  文件是否存在且可写

    -x    -x filename文件是否存在且可执行

      -f  -f filename  文件是否存在且是普通文件

    -d  -d filename  文件是否存在且是一个目录

    -e    -e filename   文件是否存在

    -n -n str1 字符串长度是否不等于0

    -z -z str2 字符串长度是否等于0

     

     

    8.case $变量名 in  (相当于if else)

    "值")

    语句;;

    "值")

    语句;;

    ...

    (1)输入一个字母,判断该用户选择哪款产品,A:笔记本 B:电饭煲 C:小台灯

     

    (2)请输入对客服的满意度,【0-3】不满意,【4-6】满意,【7-9】非常满意

    区间用【】

     

    9。循环语句 :for

    (1)输出1-10之间的数

     

     10.while循环

     

     

    总结:

     

    1.shell介绍
    通常所说的shell就是shell脚本,它是一门脚本语言,弱类型
    2.shell规范
    第一行内容为#!/bin/bash
    #注释
    是以.sh结尾的文件
    3.shell语法
    变量
    定义
    释放变量
    变量值如果有空格,需要加引号
    "" :输出变量对应的值
    '':原样输出
    ``:定义命令变量时需要使用``
    命名规范
    输出变量:echo $变量名
    输入:read 变量名
    read -p "提示信息" 变量名
    向文件传递参数
    $1--->传递第一个参数
    $2---->....
    $3--->....
    $n---->......
    $0:显示的是文件名称
    $@:显示所有的参数
    $#:显示的参数的个数

    重定向将内容保存到文件中
    正确命令: 用数字1表示, >覆盖,>>追加
    错误命令:用数字2表示,>覆盖,>>追加
    程序的结构:
    分支结构:
    if...else分支:
    逻辑运算符:-a -o !
    比较运算符:-ge -gt -lt -le -eq -ne
    测试文件的状态:test 参数 文件名
    字符串判断:== ,!=
    文件判断:-d -e -f -w -r -x .....
    if...elif...else分支
    case分支:
    注意:
    1.case这一行的最后为in
    2.;;表示语句的结束
    3. *:表示默认
    4.esac:表示case语句结束
    5.值:可以是字符串、数字、还可是区间范围【0-9】之间
    循环结构
    for循环
    格式:for 变量名 in 列表
    do
    语句
    done
    命令:seq start size max

     

    转载于:https://www.cnblogs.com/yinlili/p/11044892.html

    展开全文
  • shell从入门到应用,也包含AWK sed等操作,提供课件以及各种完整脚本以便学习。此课件视频来源于B站,链接为:https://www.bilibili.com/video/BV1st411N7WS?from=search&seid=5240570590491899209。
  • shell脚本学习方法

    千次阅读 2018-12-02 22:35:53
    1,熟悉shell脚本基础知识点,掌握(sed,find,awk,cut等重要的命令。),掌握判断语句,循环语句的使用,和shell脚本的格式,步骤要写工整。 2,练习shell脚本,从简单的脚本练起走,自己先敲一边,在看里面的...

    1,熟悉shell脚本基础知识点,掌握(sed,find,awk,cut等重要的命令。),掌握判断语句,循环语句的使用,和shell脚本的格式,步骤要写工整。

    2,练习shell脚本,从简单的脚本练起走,自己先敲一边,在看里面的内容是如何实现的。在回过头来看相关的知识点(不用死记硬背,用到的时候在记一下,慢慢就熟悉了。),然后就是练习,看里面的内容如何实现。

    3,思考人家的脚本是如何实现问题的,总结方法。比如说截取的方法,批量创建的方法,监控的方法等等。思考问题应该通过什么方法实现,想不出来就学习他人的方法。

    4,脚本是拿来用的,简单脚本熟练后就可以学习,总结实用的脚本练习了。比如批量创建用户,监控CPU,磁盘使用率,恶意IP攻击,定时备份等等以后企业运维实用的小脚本练习。

    5,总结服务器有关脚本(dhcp脚本一键搭载,DNS一键搭载lamp一键搭载等等)上课老师有讲的,自己多练多总结。没老师的,看网上视屏教程(b站上很多学习shell脚本的视频)这些在企业中用得到的脚本要多思考和总结。

    6,熟练后一定要经常练练,一个星期一两次啊,久了不练就会忘记了。

    7,刚入门的新手建议,多敲,多看,多总结。知识点不用死记硬背,用到的时候在翻看记忆。

    8,shell学习不是枯燥的,可以在网上找一些shell编程的小游戏来练练。

    在这里我想交给大家的是学习方法,知识点那些网上一大把,自己总结就可以了,当时我发现总结学习方法的就很少了。所以想给大家分享自己的一些学习方法和经验。有更好的学习方法可以评论给我,谢谢。

                                                                                                                                                              作者:渔越

    展开全文
  • Shell脚本学习

    2019-08-18 22:30:32
    Shell脚本学习 参考视频:https://www.bilibili.com/video/av21303002/?p=60 1、 编写第一个脚本文件 必须以#! /bin/bash 开头,表示是用bash进行解析脚本的 shell文件必须有可执行权限 —chmod 744 myShell.sh ...

    Shell脚本学习

    参考视频:https://www.bilibili.com/video/av21303002/?p=60

    1、 编写第一个脚本文件

    • 必须以#! /bin/bash 开头,表示是用bash进行解析脚本的
    • shell文件必须有可执行权限 —chmod 744 myShell.sh
    • 执行方法:./myShell.sh 也可以绝对路径/home/fongfiafia/shell/myShell.sh 执行
    • 多行注释:<<! !

    2、shell的变量

    • 分类:分为系统变量和用户自定义变量

      • 系统变量:$HOME 你可以echo

      例子: echo “PATH = $PATH”

      例子:set查看当前shell中所有变量

    • 定义变量

      • 定义变量: 变量 = 值 (等号两边不能有空格)

        例子:

        A=10

        ECHO “A = $A”

      • 撤销变量: unset 变量

      • 声明静态变量: readonly 不能unset

      • 可以把一个变量提升为全局变量

    • 定义变量的规则

      • 和java一样不能数字开头
      • 等号两侧不能有空格
      • 变量名称一般习惯大写
    • 怎么讲运行结果返回给变量

      • 反引号:A = 'ls -l /home'
      • MY_DATE=$(date)
    • 设置环境变量

      • 例子:etc/profile 里面有一个环境变量,myshell.sh要使用它。必须先执行

      ​ source etc/profile 让它生效:

      ​ 具体写法:在profile下面写:

      ​ TOMCAT_HOME=/OPT/XX

      ​ EXPORT TOMCAT_HOME

      ​ 然后保存退出,执行source /etc/profile

      ​ 这样就可以直接执行echo $TOMCAT_HOME的值

      ​ 最后我们可以在我们的shell文件中,直接echo $TOMCAT_HOME了

    • 读取命令行的参数:就是这种形式:./shell.sh 10 20 其中10,20就是参数

      • $n 输出文件名,参数。。。
      • $* 输出所有参数,但是参数是一个整体
      • $@ 输出所有参数,但是参数之间是分开的
      • $# 表示参数个数##
    • 预定义变量:shell设计者实现已经定义好的变量。这里介绍了几个

      • $ $ 当前进行的pid

      • $! 后台运行的最后一个进程号pid

      • $?

      • 这里的例子写到了一个东西,我在一个脚本里面执行另外一个脚本,要知道一个脚本的执行其实相当于一个进程,在一个脚本中执行,其实就是后台进程。执行的命令方法是:

        ./myshell.sh &

    3、运算符:有两种方式

    • $[运算式]

      • $[(2+3)*4] 推荐这么写
    • expr m - n 运算符之间要有空格:同时乘法和除法取余数都要加上\

    • 写一个例子:计算输入脚本的参数之和:

      SUM=$[$1+$2]

    4、条件判断

    [ condition ] 注意前后都有一个空壳

    • 两个整数的比较:(前面的- 也要写)
      • -lt 小于 little
      • -gt 大于 great
      • -le 小于等于
      • -ge 大于等于
      • = 字符串的比较
    • 文件的
      • -e 文件是否存在 if [ -e /root/xxx.txt ]

    5、流程控制

    • if 判断

      • if then fi
      • if then elif then fi
    • case语句

      • case $1 in
        
        "1")
        
        	echo "周一"
        
        ;;
        
        "2")
        
        	echo "周二"
        
        *)    -----------相当于default
        
        	echo "都匹配不上"
        
        esac
        
        
    • for循环

      • for i in$*”   //这个$*是位置变量哦! 他是一个整体哦!!
        
        do 
        
        		echo "the num is $i"  //这样是只输出一条语句
        
        done
        
        因此其实我们最常用的是 $@
        
        
      • for((i=1;i<100;i++))    //在这个上面要先 SUM=0
        
        do
        
        		sum =$[$sum+$i]
        
        done
        
        echo "sum=$sum"
        
        
    • while 后面要加一个空格

      从命令行输入一个数n,计算1+2+3+。。。+n

      • while [ $i -lt $1 ]      //在这个上面要先 SUM=0   i=0
        
        do
        
        		sum=$[$sum+$i]
        
        		i=[$i+1]
        
        done
        
        echo "$sum"
        
        

    5、读取控制台输入read

    • 参数
      • read -p “请输入一个数num=” NUM1 //进入阻塞,等待用户输入一个值给NUM1
      • read -t 10 -p "请输入一个数num=” NUM1 //进入阻塞,等待用户输入一个值给NUM1,必须在10秒内

    6、函数

    • 系统函数

      • basename 返回完整路径最后的部分“/”后面的内容
    • 自定义函数

      function getSum(){
      
      	SUM=[$n1+$n2]
      
      	echo "$SUM"
      
      }
      
      read -p "请输入第一个值" n1
      
      read -p "请输入第二个值" n2
      
      getSum $n1 $n2
      
      

    7、案例学习

    要求:每天凌晨2:10备份数据库ztguiguDB到/data/backup/db中

    备份开始和结束能够给出相应的提示信息

    备份后的文件要求以备份时间为文件名,并打包成tar.gz形式

    在备份的同时,检查是否有10天前备份的数据库文集那,如果有就删除

    #!/bin/bash
    #备份的路径
    BACKUP=/data/backup/db
    #获取当前的时间作为文件名
    DATETIME=$(date +%Y_%m_%d_%H%M%S)
    
    echo "开始备份,备份的路径是$BACKUP/$DATETIME.tar.gz"
    
    #主机
    HOST=localhost
    DB_USER=root
    DB_PWD="123"
    
    #创建备份的路径
    [ ! -d "$BACKUP/$DATETIME" ] && mkdir -p "$BACKUP/$DATETIME"
    DATABASE=atguiguDB
    #执行mysql的备份数据库指令
    mysqldump -u$DB_USER -p$DB_PWD --host=$HOST $DATABASE | gzip > $BACKUP/$DATETIME/$DATETIME.sql.gz
    
    #打包
    cd $BACKUP
    tar -zcvf $DATETIME.tar.gz $DATETIME
    #删除临时目录
    rm -rf $BACKUP/$DATETIME
    
    #删除10天前的文件
    find $BACKUP -mtime +10 -name "*.tar.gz" -exec rm -rf {} \;
    

    最后需要建一个进程任务crontab -e

    10 2 * * * /home/fongfiafia/shell/mysql_db_backup.sh
    
    展开全文
  • 一本学习Shell脚本的非常经典的书!作为Linux/Unix程序员必看
  • 学习linux 命令,是一个量变到质变的过程,我们多看别人处理问题的方法,掌握一些命令及技巧,遇到不懂就去搜索查询,平时养成用命令的习惯,尽量不要用可视化的工具,久而久之,下笔如有神,呼之即来,当然做任何...

    学习linux 命令,是一个量变到质变的过程,我们多看别人处理问题的方法,掌握一些命令及技巧,遇到不懂就去搜索查询,平时养成用命令的习惯,尽量不要用可视化的工具,久而久之,下笔如有神,呼之即来,当然做任何事情经验都是这样积累的

    特别有用的命令我会加粗,还有一些是一些命令参数 的详解和用法

    我错别字比较多,可能有些地方出现错误,那都是输入发的锅,聪明的你,猜一猜就知道上下文什么意思了,嘿嘿

    shell脚本是个实现linux 系统及运维自动化管理的重要且必备的工具

    1.首先需要熟练使用vi/vim编辑器的是使用,我们还需要ssh终端配置及.vimrc 的配置,这样我们的vim功能就会变得强大

    2.linux 常用的150个常用的命令

    3.shell中正则表达式 grep sed awk要熟练,称之为正则三剑客,awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大

    4.常见的lnux 网络服务部署,及优化排错crond ,nfs,rsync,inotify,lanmp,sersync,ssh,Memcached

    什么是shell ,shell是命令解释器,他在操作系统的最底层,负责直接与用户对话,把用户的输入解释给操作系统,并处理各种各样的操作系统的输出结果,这种对话方式是交互式(及从输入命令,既可以得到shell的回应),或者非交互(执行脚本程序)的方式

    python 语言介绍,和shell差不多,大家可以对照参考

    一个清除日志的脚本

    #!/bin/bash
    #清除日志脚本
    LOG_DIR=/var/log   #定义变量,用来存储要清楚的路径下的日志
    ROOT_UID=0 # $UID是0的时候,表示用户具有root权限
    #要使用root用户来运行脚本,其中-ne表示不等于,-gt表示大于,-lt小于,-eq等于,-ge大于等于,-le小于等于  ,linux 中逻辑与 -a  逻辑或 -o
    if[ "$UID" -ne "$ROOT_UID" ]
     then
         echo "Must be root to run this script"
       exit 1
    fi
    # 首先进入对应的目录,如果目录不存在就提示 
    # 这里用|| 逻辑与运算,我们可以如果目录存在 ,后面的报错就不会执行,如果不存在,就会报错
    cd $LOG_DIR || {
       echo "Cannot change to necessary directory." >&2    # 这里的是将输出的信息 输出到标准错误输出流中
       exit 1
    }
    
    cat /dev/null > message && echo "Logs cleaned up." #清理成功打印输出日志
    #  message 是路径下的文件 ,我们用/dev/null 来清空内容
    #/dev/null 还可以将一些非标准的 输入流 写入到 /dev/null ,这样来可以屏蔽掉我们想展示的东西
    exit 0
    #退出之前返回0表示成功,返回1表示失败

    (补充一个命令:我们在 启动一些软件时,通常是交互式的,我们想后台启动,我们可以在 启动命令 后面 输入  空格&)

    当然我们清除日志的命令(应用场景,保留文件,清空内容)

     echo >test.log   或者>test.log 或者cat /dev/null > test.log

    shell 脚本擅长处理纯文本类型的数据,而linux系统中几乎所有的配置文件,文件(如nfs,rsync,httpd,nginx,lvs等)多数启动文件都是纯文本类型的文件

    shell在运维中的作用

    shell 脚本语言是弱类型语言,比较通用的有shell标准Bourne shell (sh)和 C shell(csh),其中Bourne shell(sh)已经被

    bash shell 取代

    查看当前系统支持的shell 类型,命令是:cat /etc/shells

    其中前三个我们比较常用,bash 比sh功能强大

    文件测试表达式(我们操作问价前,要判断文件是否存在)文件命令的 参数详解

    如果我们忘记上述参数有什么用,我们可以用man test 命令查看,不停的回车,直到出现end ,我们man test 命令可以看很多比比较的 命令的用法

    linux中man 命令的作用(这个命令很有用,我们可以用来查看 其他命令参数的作用,比如man cp ,我们就可以知道cp 命令参数的作用和功能,可能只会展示一部分,我们按回车键,可以继续展示,知道下方出现end ,我们q 就可以退出,很有用)

    比如我当前目录下有一个1.sh 文件,我看看是否是可执行文件,如果是输出为1,不是输出为0

    值得注意的是我们 给一个变量名赋值问系统文件的路径, 我们判断的是文件,不是判断的字符串

    (这里提一下linux 命令中声明变量的问题:

    变量名=变量值 , 注意=左右不能有空格,使用$变量名调用变量

    使用set命令可以查看所有变量,包括普通变量和环境变量,删除变量名:使用unset变量名即可

    我们接下来创建一个脚本,写一个测试

    输入 ,这里$1 表示我们执行脚本的第一个参数 ,后面的大括号 中的命令是要给整体,

    第一个参数是3 ,我们就执行后面的 命令

    然后我们测试(如果测试脚本没有成功,记得看是不是 脚本没有执行的权限,添加执行权限)

    常用的字符串后面参数详解

    字符串不为0

    整数比较的 常用的命令

     如果我们要[] 中使用> 表示大于 我们要用转义符,< 同理

    练习两个整数比较大小,用三种方法,1脚本传参,2 用read 方法, 3 定义变量的方式

    #!/bin/sh
    #传参的方式,如果传入的参数不等与两个
    [ $# -ne 2 ]&& {
        echo "USAGE:num1 num2"
        exit 1
    }
    
    #然后判断两个数是否是整数
    [ "`echo "$1"|sed -r 's#[^0-9]##g'`" = "$1" ] || {
        echo "first arg must be int."
        exit 2
    }
    
    [ "`echo "$2"|sed -r 's#[^0-9]##g'`" = "$2" ] || {
        echo "first arg must be int."
        exit 2
    }
    
    [ $1 -lt $2 ] && {
        echo "$1 < $2"
        exit 0
    }
    
    [ $1 -eq $2 ] && {
        echo "$1 = $2"
        exit 0
    }
    
    [ $1 -gt $2 ] && {
        echo "$1 < $2"
        exit 0
    }

    sed 命令 参考这个 博客https://www.cnblogs.com/wangqiguo/p/6718512.html

    sed命令实例:判断是否是 是整数

    这个命令的作用是: 判断是否全是数字,如果不是则输出为0,是输出为1 ,sed 是一个流编辑器,利用正则,将输入的123中非数字的替换为空,这样 与原来的比较如果相同就是 输入的是整数

    用read方法来读取判断你是否输入的是整数

    #!/bin/sh
    read -p "pls input two num:" num1 num2
    
    #传参的方式,如果传入的参数不等与两个
    [ $# -ne 2 ]&& {
        echo "USAGE:num1 num2"
        exit 1
    }
    
    #然后判断两个数是否是整数
    [ "`echo "$1"|sed -r 's#[^0-9]##g'`" = "$1" ] || {
        echo "first arg must be int."
        exit 2
    }
    
    [ "`echo "$2"|sed -r 's#[^0-9]##g'`" = "$2" ] || {
        echo "first arg must be int."
        exit 2
    }
    
    [ $1 -lt $2 ] && {
        echo "$1 < $2"
        exit 0
    }
    
    [ $1 -eq $2 ] && {
        echo "$1 = $2"
        exit 0
    }
    
    [ $1 -gt $2 ] && {
        echo "$1 < $2"
        exit 0
    }
     

    (插播一个命令:我们在vim 下,想用替换 在命令模式下 输入   :%#原字符串#新字符串#g      ,就可以将所有的字符都替换掉)

    read 的方式去判断

    #!/bin/sh
      2 read -p "pls input two num:" num1 num2
      3 a=$num1
      4 b=$num2
      5 
      6 [ -z "$a" -o -z "$b" ] && {
      7     echo "USAGE: num1 num2"
      8     exit 1
      9 }
     10 #传参的方式,如果传入的参数不等与两个
     11 
     12 
     13 #然后判断两个数是否是整数
     14 [ "`echo "$a"|sed -r 's#[^0-9]##g'`" = "$a" ] || {
     15     echo "first arg must be int."
     16     exit 2
     17 }
     18 
     19 [ "`echo "$b"|sed -r 's#[^0-9]##g'`" = "$b" ] || {
     20     echo "first arg must be int."
     21     exit 2
     22 }
     23 
     24 [ $a -lt $b ] && {
     25     echo "$a < $b"
     26     exit 0
     27 }
     28 
     29 [ $a -eq $b ] && {
     30     echo "$a = $b"
     31     exit 0
     32 }
     33 
     34 [ $a -gt $b ] && {
     35     echo "$a < $b"
     36     exit 0
     37 }
    

    单的脚本,根据输入的参数打印出不同的结果:

    #!/bin/sh
    menu() {
    cat <<END
    	1.[install lamp]
    	2.[install lnmp]
    	3.[exit]
    	pls input the menu you want:
    END
    }
    
    menu
    
    read num 
    
    [ "$num" = "1" ] && {
    	echo "start install lamp"
    	[ -x lamp.sh ] || {
    		echo "the file cannot exec."
    		exit 2
    	}
    	./lamp.sh   #输入1 要执行的脚本
    	exit 1
    }
    
    [ "$num" = "2" ] && {
    	[ -x lnmp.sh ] || {
    	echo "the file cannot exec."
    	exit 2
    	}
    	./lnmp.sh #输入2 要执行的脚本
    	exit 1
    }
    
    [ "$num" = "3" ] && {
    	echo "exit"
    	exit 3
    }
    
    echo "input error"
    exit 0
    

    用shell脚本判断你系统剩余内存的大小,如果内存低于100M就邮件报警给管理员,并且加入系统定时任务,每三分钟执行一次

    首先先写一个发邮件的脚本(发送邮件,首先你要获得root权限,详细看https://blog.csdn.net/zh314js/article/details/76038868

     #!/bin/sh
      2 cur_free=`free -m|grep buffers\/|awk '{print $NF}'`   #nf输出分割的最后一段
      3 chars="current memory is $cur_free."
      4 echo "$cur_free"
      5 if [ $cur_free -lt 100 ] #当内存小于100M
      6         then
      7             echo "现在的内存是:$cur_free"| mail -s "$chars" 1342054842@qq.com   #现在内存是$cur_free是  邮件的内容, -s 后面是邮件的title
      8 fi
      9 
    ~              

    我们假设这个脚本名称是memorymontor.sh

    然后我们执行定时任务

    crontab -l
    
    */3 * * * * memorymontor.sh >/dev/null 2>$1 #每三分钟执行一次,脚本,标准输入丢弃,错误输出流 重新定向到了标准输出,而标准输出 丢弃了,所以标准输入输出都丢弃了

    监控web服务是否正常和监控db服务是否正常,不低于5中思路

    共同的方法有:

    利用端口   

    1、本地的用命令:netstat /ss/lsof         (比如netstat -lnp|grep 端口号,ss -lnp | grep 端口  ,lsof -i:端口)

    远程的命令:telnet/nmap/nc

    ss命令(参考博客http://www.cnblogs.com/sparkdev/p/8421897.html

    2、利用进程(本地)ps -ef | prep 端口或对应的程序

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

    3、利用wget/curl(http方式,判断根据返回值或者返回的内容,有时候进程存在,但是防火墙挡住了,也有问题)

    4、header(http),(http方式,根据状态码判断)

    5、数据库特有,通过mysql客户端连接,根据返回值或者返回的内容进行判断

    用三种方法,监控db服务是否开启

    #!/bin/sh
       #判断mysql服务是否开启的常用几种等价的方法
       if [ "`netstat -lnt | grep 3306 |awk -F "[ :]" '{print $4}'`" = "3306" ]
       # if [ `netstat -lnt |grep 3306 |awk -F "[ :]+" '{print $4}'` -eq 3306 ] 是错误的,因为由于当没有启动mysql ,就成了null 与 3306比较,报错,用= 是因为用了双引号,是两个字符串之间的比较
       #if [ `ps -ef | grep mysql | grep -v grep |wc -l' -gt 0 ]
       #这里的ip 是数据库的服务器ip
       #if [ `nc -w 2  10.0.0.7 3306 &>/dev/null&&echo ok |wc -l` -gt 0 ] #nc用于看是否看防了对应的端口
       #if [ `namp 10.0.0.7 -p 3306 2>/dev/null|grep open|wc -l` -gt 0 ]  ##!/bin/sh
       #判断mysql服务是否开启的常用几种等价的方法
       if [ "`netstat -lnt | grep 3306 |awk -F "[ :]" '{print $4}'`" = "3306" ]
       # if [ `netstat -lnt |grep 3306 |awk -F "[ :]+" '{print $4}'` -eq 3306 ] 是错误的,因为由于当没有启动mysql ,就成了null 与 3306比较,报错,用= 是因为用了双引号,是两个字符串之间的比较
       #if [ `ps -ef | grep mysql | grep -v grep |wc -l' -gt 0 ]
       #这里的ip 是数据库的服务器ip
       #if [ `nc -w 2  10.0.0.7 3306 &>/dev/null&&echo ok |wc -l` -gt 0 ] #nc用于看是否开放了对应的端口
       #if [ `namp 10.0.0.7 -p 3306 2>/dev/null|grep open|wc -l` -gt 0 ]
       #if[ `lsof -i tcp:3306|wc -l` -gt 0 ]
          then
              echo "MYSQL is Running"
          else
              echo "MYSQL is Stopped"
      fi
       #if[ `lsof -i tcp:3306|wc -l` -gt 0 ]
          then
              echo "MYSQL is Running"
          else
              echo "MYSQL is Stopped"
      fi
    
    !/bin/sh
    if [ `curl -I http://10.0.0.52 2>/dev/null 

     

    展开全文
  • Bashshell脚本编程视频教程免费分享! 首先给大家介绍一下shell是什么?linux下有许多种shell可用。脚本必须和shell匹配,一种shell的脚本无法在其他shell下工作。bash是linux下的默认shell。而且bash(/bin/bash)...
  • shell脚本学习笔记

    千次阅读 2019-10-03 12:58:27
    shell脚本学习笔记 1.Shell入门简介 Shell是操作系统的最外层, Shell可以合并编程语言以控制进程和文件,以及启动和控制其它程序。shell通过提示您输入,向操作系统解释该输入, 然后处理来自操作系统的任何结果输...
  • 如果此百度云盘链接失效,请留言,我尽量会及时更新,谢谢
  • Linux学习shell脚本

    2017-06-13 14:16:50
    标记脚本的解释器 脚本: #!/bin/bash  echo "hello world" 赋予执行权限 chmod +x ./test.sh 执行脚本:./test.sh 定义变量时不需要 $ 符号 :td='date "+%y%m%d"' 1.变量名和符号之间不能有...
  • 2019年Linux命令行与shell脚本编程从入门到精通的视频教程 7年的...
  • 一套价值5000的shell脚本 全套学习视频,绝对完整和学习软件,开源自己所有的视频 给所有爱学习shell脚本的同学学习,希望国家更强大!
  • shell-scripting-tutorial:完整的初学者指南,从头开始学习shell脚本,其中包括视频,实践方案和项目构想
  • Linux命令&Shell脚本(全系统录制) Python、JavaEE、A...
  • 【马哥私房菜】亲情推出《linux shell脚本攻略》视频教程 ...《Linux命令行与shell脚本编程大全》第三版 学习笔记 第1部分 Part 1 Linux 命令行 第1 章 初识Linux shell 本章内容 - 什么是Li...
  • 什么是Shell Shell是命令解释器(command interpreter),是Unix操作系统的用户接口,程序从用户接口得到输入...下图所示用户、shell和操作系统的关系: Shell也是一门编程语言,即shell脚本,shell是解释执行的脚...
  • shell 脚本学习

    2016-05-25 22:03:25
    shell 本身是一个用C语言编写的程序,它是用户使用linux/Unix的桥梁,用户大部分工作都是通过shell完成的。它虽然不是Unix/Linux系统内核的一部分,但它调用了系统核心的大部分功能来执行程序、建立文件并以并行的...
  • 针对以上问题,我精心总结了18个生产环境中经典的Shell脚本,通过这些案例贯穿Linux Shell脚本的大部分知识点,学习编写思路,学习编写技巧,提升Linux使用能力,让你的Shell功底上升一个段位!
  • 高级Shell脚本编程

    2013-10-28 10:08:19
    32.1. 非官方的Shell脚本编写风格 33. 杂项 33.1. 交互与非交互式的交互与非交互式的shell和脚本 33.2. Shell包装 33.3. 测试和比较: 一种可选的方法 33.4. 递归 33.5. 将脚本"彩色化" 33.6. 优化 33.7. ...
  • Linux shell脚本基础学习,虽然不涉及具体东西,但是打好基础是以后学习轻松地前提。Linux 脚本编写基础◆1.1 语法基本介绍1.1.1 开头程序必须以下面的行开始(必须方在文件的第一行):#!/bin/sh符号#!用来告诉系统...
  • 目录 序 1. 原书作者致中国读者(英文) 2. 原书作者致中国读者(译文) ...1. 为什么使用shell编程? 2. 带着一个Sha-Bang出发(Sha-Bang指的是#!) 2.1. 调用一个脚本 2.2. 初步的练习 第二部分. 基本...
  • 前言 我们为你的面试准备选择了...整理了一些个人觉得比较好的学习书籍、视频资料以及大厂面经视频共享在群文件里面,有需要的小伙伴可以自行添加哦!~ 1) 如何向脚本传递参数 ? 例子 : 显示文件名称脚本 ..
  • Shell脚本利用ffmpeg批量处理视频文件

    千次阅读 2019-04-03 19:31:47
    最近遇到一个问题,对一个文件下所有视频文件进行切割处理,...一般这种需要多次操作操作命令行的情况都可以把命令写成一个shell脚本来处理。如果没装的话可以参考这篇文章安装ffmpeg教程, ffmpeg的具体操作 学习...
  • 包括概述、linux文件系统、正则表达式、sed命令和awk编程、文件的排序、合并和分割、变量和引用、操作符、循环与结构化命令、变量的该机用法、I/O...函数、别名、列表和数组、shell脚本调试技术、bash shell编程范例等...
  • 今天学到了shell脚本编写,看了视频挺简单的,真到自己操作了,就一大堆问题 首先文件后缀名要标记sh,脚本开头要使用#!/bin/bash,如果是别的shell后面的bash要换, 在开始编写脚本之前先要对该文件进行批注示意,...
  • Linux常用Shell脚本,值得学习及收藏

    千次阅读 2018-11-08 07:30:00
    在运维中,尤其是linux运维,都知道脚本的重要性,脚本会让我们的 运维事半功倍,所以学会写脚本是我们每个linux运维必须学会的一门功课,这里收藏linux运维常用的脚...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 16,431
精华内容 6,572
关键字:

shell脚本学习视频