zoukankan      html  css  js  c++  java
  • linux初学 :简易的shell脚本

    什么是shell

     Shell本身是一个用C语言编写的程序,它是用户使用Unix/Linux的桥梁,用户的大部分工作都是通过Shell完成的

    Shell有两种执行命令的方式:

    交互式(Interactive):解释执行用户的命令,用户输入一条命令,Shell就解释执行一条。
    批处理(Batch):用户事先写一个Shell脚本(Script),其中有很多条命令,让Shell一次把这些命令执行完,而不必一条一条地敲命令。
    第一个脚本:

    vi hello.sh  一般shell脚本都以.sh为结尾

    #!/bin/bash
    echo 'hello world'
    // #!是一个约定的标记,告诉系统该脚本使用哪个解释器来执行
    echo 命令用于向窗口输出文本

    ./hello.sh,即可打印hello world字符串了

    下面我们写一个停止mysql的脚本:

    vi mysql_stop.sh

    #!/bin/bash pid=`ps -ef|grep mysql|grep -v grep|awk '{print $2}'` // =号后的符号是左tab键上边的那个符号,不是单引号,千万不要加错``两个符号之间代表是命令,变量名和‘=’后不能有空格 //ps -ef|grep mysql用来查询mysql的进程,grep -v grep用来屏蔽grep的进程,awk用来取查询结果的第二列的值,即进程号 kill -9 $pid //kill -9 用来杀进程,$pid是用来取变量值,要加$符号

    如上,一个停止mysql的脚本就完成了,我们只需要运行mysql_stop.sh这个脚本就可以停止mysql了

    假设mysql未启动,这个脚本再运行的时候就会报错了,那么我们需要在shell脚本里加入if判断语句

    #!/bin/bash
    pid=`ps -ef|grep mysql|grep -v grep|awk '{print $2}'`
    if [ $pid ]    //if语句开始,[]括号中是条件,[]中前后一定要有空格
    then         //then   if语句的结构,条件满足时执行then后的内容
    kill -9 $pid
    else        //else 后为条件不满足时,执行的内容
    echo 'mysql started'
    fi           //fi 代表if语句的结束,一定要加,否则脚本运行时会报错

    还有一种情况是ps查询出的进程有很多个,那我们如何杀掉进程呢,这时需要用到xargs命令

    #!/bin/bash
    pid=`ps -ef|grep lampp|grep -v grep|wc -l`
    if [ $pid -ge 2 ]    // -ge是shell的函数之一,相当于“大于等于”,shell中只能用shell特定的运算函数,可查看详细列表,该条件的意思是查询到的lampp进程行数大于2时执行then的内容
    then        
    ps -ef|grep lampp|grep -v grep|awk '{print $2}'|xargs kill -9
    //以上语句中,xargs的意义:将awk取到的所有进程号全部传给kill -9 ,杀掉全部进程
    else       
    echo 'lampp stopped'
    fi          

    所以,shell中常用的几种命令大家要牢记了

  • 相关阅读:
    Java--环境变量(jdk、jre)配置
    Jsoup爬取数据设置代理IP
    数据库连接的莫名问题:create connection error
    springBoot使用过程的小感悟
    Activiti工作流引擎数据库表结构
    IDEA创建Activiti工作流开发
    Java开源爬虫框架WebCollector设置代理
    使用OkHttpClient爬取json数据
    雪中的杭州
    StringBuffer中的append方法
  • 原文地址:https://www.cnblogs.com/faith-zxd/p/5872952.html
Copyright © 2011-2022 走看看