如何解决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指定执行文件即可:

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持aitechtogether.com。

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
心中带点小风骚的头像心中带点小风骚普通用户
上一篇 2023年12月27日
下一篇 2023年12月27日

相关推荐

此站出售,如需请站内私信或者邮箱!