Jenkins如何使用Groovy删除Linux进程

5 篇文章 0 订阅
4 篇文章 0 订阅
    host = "app@1.1.1.1"
    //进程名称
    process ="/usr/local/tomcat"
   +++++++ 方法一 +++++++
    //进程个数
    result = sh returnStdout: true ,script: "ssh $host \"ps -ef | grep \'$process\' | grep -v grep| wc -l\""
    result = result.trim()
    echo result
    if (result!=null && result.toInteger() > 0){
        echo "kill 进程 "+result+"个!"
        try { 
            sh "ssh $host \'ps -ef | grep \"$process \" | grep -v grep | awk \"{print \$2}\" | xargs kill -9\'"
        } catch(Exception ex) {
            resultTemp = sh returnStdout: true ,script: "ssh $host \"ps -ef | grep \'$process \' | grep -v grep| wc -l\""
            echo "进程kill成功"
            if (resultTemp!=null && resultTemp.toInteger() > 0){
                echo "进程kill失败"
                ex.printStackTrace()
            }
        }
    }else{
        echo "kill 进程 0个!"
    }
    +++++++方法二+++++++
    killSh = "ps -ef|grep \'$process\' |grep -v grep|awk \'{print \\\$1\\\",\\\"\\\$2}\'|awk -F\',\' \'{print \\\$2}\'|xargs kill -9"
    try { 
        sh "ssh $host \"$killSh\""
        echo "KILL SUCCESS"
    } catch(Exception e1) {
        def msg = e1.getMessage();
        if(msg=="script returned exit code 123"){
            echo "This process does not exist!"
        }else{
            echo "KILL FAILURE!"
        }
    } 

其中需要注意两个点

  1. ssh远程操作的时候,ssh userName@local “需要执行的命令,这里就是普通的字符串”
    例如

    killSh = "ps -ef|grep \'$process\' |grep -v grep|awk \'{print \\\$1\\\",\\\"\\\$2}\'|awk -F\',\' \'{print \\\$2}\'|xargs kill -9"
    

    将字符串拼接好,放入ssh后的双引号之内就可以了。

  2. Groovy异常的捕获

    try { 
       //Protected code 
    } catch(ExceptionType1 e1) { 
       e1.getMessage()//异常信息
    } catch(ExceptionType2 e2)  {
      e2.printStackTrace()//抛出异常
    }
    

注:
在linux中请慎重使用标点符号,双引号中的语句可以直接使用$test这种方式赋值

ssh host “$test...”

当有反斜杠存在的时候,使用${test}这种形式,大括号可以用来区分

ssh host “${path}/test.log”
Jenkins是一个开源的自动化服务器,可以用于持续集成和持续交付。Pipeline是Jenkins的一种插件,用于实现将软件交付过程中的各个环节自动化并串联起来。而groovy-postbuild则是Pipeline插件中的一个功能,用于在构建完成后执行一些Groovy脚本。 groovy-postbuild功能允许我们根据构建的结果来执行不同的操作。例如,我们可以通过这个功能发送邮件通知构建的结果,或者根据构建的状态来触发其他的流程。在Jenkins Pipeline中使用groovy-postbuild可以通过以下步骤实现: 首先,在Pipeline脚本中引入groovy-postbuild插件。可以在Jenkins的全局库中配置插件,或者在Pipeline脚本中使用`@Library`指令引用插件。 接下来,在构建的某个阶段(如构建完成后)使用groovy-postbuild功能。可以通过在Pipeline脚本中使用`post`块来定义要执行的脚本。在`post`块中可以使用`always`、`success`、`unstable`、`failure`、`changed`等关键字来指定在不同的构建结果下要执行的脚本。 最后,在groovy-postbuild脚本中编写具体的Groovy脚本。这些脚本可以使用Jenkins提供的API来获取构建的信息,执行特定的操作或报告构建的结果。 通过使用jenkins pipeline groovy-postbuild功能,我们可以更加灵活地控制和定制构建后的操作。无论是发送通知、触发其他流程还是生成报告,都可以通过groovy-postbuild功能来实现。这个功能为我们提供了更多的灵活性和定制性,使我们能够更好地适应不同的构建需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值