linux shell

关注公众号 jb51net

关闭
首页 > 脚本专栏 > linux shell > jenkins 执行shell脚本 sh: ... not found

如何解决jenkins 执行shell脚本 sh: ... not found的问题

作者:一片三叶草

这篇文章主要介绍了如何解决jenkins 执行shell脚本 sh: ... not found的问题,具有很好的参考价值,希望对大家有所帮助。

jenkins 执行shell脚本 sh: ... not found

最近在玩jenkins的时候出现了以下问题,两次遇到这种问题,所以记录一下

这是因为没有带上系统的环境变量。

只有在 shell中第一行加上这句话:#!/bin/bash -ilex

Jenkins执行脚本文件

Jenkins执行脚本文件如下(startup.sh):

#!/bin/bash
#这里可替换为你自己的执行程序,其他代码无需更改
export JAVA_HOME=/usr/src/java/jdk1.8.0_201
APP_NAME=school-rest-1.0.0-SNAPSHOT.jar
FULL_PATH=/usr/data/school-rest/school-rest-1.0.0-SNAPSHOT.jar
#启动方法
start(){
    pid=`ps -ef|grep $APP_NAME|grep -v grep|awk '{print $2}'`
          if [ "$pid" ]; then
        echo "$APP_NAME is already running. pid=$pid ."
    else
        nohup $JAVA_HOME/bin/java -jar $FULL_PATH --spring.profiles.active=dev >> catalina.out 2>&1 &
                echo $!
        echo "$APP_NAME now is running"
    fi
}
#停止方法
stop(){
    pid=`ps -ef|grep $APP_NAME|grep -v grep|awk '{print $2}'`
    if [ "$pid" ]; then
        kill -9 $pid
        echo "Pid:$pid stopped"
    else
        echo "$APP_NAME is not running"
    fi
}
#输出运行状态
status(){
    pid=`ps -ef|grep $APP_NAME|grep -v grep|awk '{print $2}'`
    if [ "$pid" ]; then
        echo "$APP_NAME is running. Pid is ${pid}"
    else
        echo "$APP_NAME is NOT running."
    fi
}
#根据输入参数,选择执行对应方法,不输入则执行使用说明
case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    status)
        status
        ;;
    restart)
        stop
        sleep 5
        start
        ;;
    *)
        echo "Usage:{start|stop|status|restart}"
        ;;
esac
exit 0

只需要在jenkins指定执行文件即可:

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文