zoukankan      html  css  js  c++  java
  • shell脚本笔记--根据进程名关键字kill对应的进程

    shell基本概念:

    A Unix shell is a command-line interpreter or shell that provides a traditional Unix-like command line user interface.
    Bash is a Unix shell and command language written by Brian Fox for the GNU Project as a free software replacement for the Bourne shell

      从语言角度上来说,shell就是执行在类Unix系统上的命令行语言。而shell脚本就是有一组合法的shell命令来组成。

    脚本编写基础语法:

    1、流程控制:

     if判断格式:

    if [ condition1 ]             # 此处为判断条件,中括号内部首尾都要有一个空格
    then
        command1           # 此处为该条件下所要执行的命令。多条命令以 换行 或 ; 作为分隔
        command2
    elif [ condition2 ]
    then 
        command3
        command4
    else
        commandN
    fi                 # 注意fi结束

     for循环格式:

    for var in item1 item2 ... itemN
    do                              # 要循环执行的命令,以do开头
        command1
        command2
        ...
        commandN
    done                  # 要循环执行的命令,以done结束
    
    

    while循环:

    while [ condition ]         # 要循环执行的命令,以do开头
    do command done          # 要循环执行的命令,以done结束
    
    

     判断式的类型:

    1)算术判断

    描述 例子 注意事项
    相等(equal) [ 2 -eq 2] 首尾空格
    不相等(not equal) [ 2 -nq 3 ]  
    大于(greater than) [ 2 -gt 1 ]  
    大于等于(greater equal) [ 2 -ge 1 ]  
    小于(less than) [ 3 -lt 5 ]  
    小于等于(less equal) [ 3 -le 2 ]  
    判断式不用[]的情况 例子
    (())也可表示算术比较 ((10>=8))

    2)字符串判断

    描述 例子  
    如果两字符串相同,则结果为真 [ string1 = string2 ]   
    如果两字符串不相同,则结果为真 [ string1 != string2 ]  
    如果字符串不是空,则结果为真  [ -n "$var" ]  
    如果字符串是空,则结果为真  [ -z "$var" ]   
    表达式中*表示0或者多个字符  [[ "xxxx" == x* ]]   
    在表达式中?表⽰单个字符   [[ xxx == x?? ]]   
    在引用变量的时候要记得加双引号[ -z "$a"] 否则当a未定义时会语法报错    

    3)逻辑判断

    描述 操作符 例子 注意事项
    逻辑与(and) -a [ 2 -ge 3 -a 1 -le 2 ] 也可用&&表示 [[ 2 -ge 1 && 3 -ge 4 ]];echo $?
    ! [ ! 2 -ge 1 ];echo $? 该例子返回1
    逻辑或(or) -o [ 2 -ge 1 -o 3 -ge 4 ];echo $? 也可用||表示 [[ 2 -ge 1 || 3 -ge 4 ]];echo $?

    4)shell内置判断

    描述 操作符 例子
    如果文件(目录)存在(exist),则结果为真 -e file [ -e my ];echo $?
    如果文件是一个目录,则结果为真 -d file for f in *;do echo $f;if [ -d $f ];then break;fi;done
    如果文件是一个普通文件,则结果为真 -f file  
    如果文件可读,则结果为真 -r file  
    如果文件的长度不为0,则结果为真 -s file  
    如果文件可写,则结果为真 -w file  
    如果文件可执行,则结果为真 -x file  
    [[]]是[]的扩展语法,在老的sh中并不⽀持。推荐用[]    

    调用shell脚本的方法: 

    1、直接输入脚本所在路径进行调用;
      前提:
    
          1)脚本第一行添加    #!/bin/bash    ,来告诉系统这个脚本需要什么解释器来执行,即使用哪一种 Shell
    
          2)使用chmod +x 文件路径  给使用者赋予执行该脚本的权限
    
    2、直接运行解释器,后面加上 shell 脚本的文件名为参数;
    
         e.g.  sh test.sh

    调用shell脚本时传参:

    1、在脚本路径后,输入参数
    2、多个参数以空格分隔
    3、在脚本内部,$0表示获取该脚本名,$1表示获取调用脚本时传的第一个参数   $2表示调用脚本时传的第二个参数。。以此类推

    e.g.
    sh test.sh 第一个参数 第二个参数 第三个参数

    实例--根据进程名关键字kill对应的进程:

    1)进程关键字教程,并写死在判断中的情况。

    #! /bin/bash
    # kill进程函数 killProcess(){
    echo "filename:$0"; echo "firstParameter:$1" echo "firstParameter:$2" echo "firstParameter:$3" if [ $1 = 'kill供货打桩' ]; then
         # ps和grep和awk组合过滤出进程id,作为参数传给xargs kill -9 ps -aux |grep 'uwsgi --http :8001 --chdir /root/Desktop/Suppli'|grep -v grep|awk '{print $2}'|xargs kill -9; ps -aux |grep 'uwsgi --http :8001 --chdir /root/Desktop/Suppli'; elif [ $1 = 'kill自动化定时' ]; then ps -aux | grep '/usr/sbin/CROND -n' | grep -v grep|awk '{print $2}' | xargs kill -9; ps -aux | grep 'python /root/Desktop/Automation/MainThread.py'| grep -v grep | awk '{print $2}' | xargs kill -9 ; ps -aux | grep 'python /root/Desktop/Automation/MainThread.py' fi } killProcess $1 $2 $3 # 传参调用函数

     2)直接传进程关键字的情况

    #! /bin/bash
    # kill进程函数
    killProcess(){
        echo "filename:$0";
        echo "firstParameter:$1"
        echo "firstParameter:$2"
        echo "firstParameter:$3"
        ps -aux |grep $1|grep -v grep|awk '{print $2}'|xargs kill -9;
        
    }
    killProcess $1 $2 $3    # 传参调用函数
  • 相关阅读:
    SQL Server-基础-经典SQL语句
    Web Service简介
    大学学习与班级社团管理经验总结
    arduino超声波开发模块
    CSS中关于居中的几种设置方法
    Software testing lab3
    jQuery表格排序问题
    Jquery中的data()方法、att()、prop()方法的区分
    WEB开发自己收集的资源
    Jquery插件封装---奇怪的代码
  • 原文地址:https://www.cnblogs.com/minerrr/p/10576442.html
Copyright © 2011-2022 走看看