sshpass执行sh shell脚本不能启动springboot项目,但ssh登录后执行sh sheel脚本启动正常

问题:通过sshpass自动登录linux服务器,通过sh执行sheel脚本不能启动springboot项目,但通过ssh登录linux服务器后通过sh执行sheel脚本可以正常启动springboot项目;
详细信息:
1,【异常】通过sshpass执行启动项目脚本
Jenkinsfile:sshpass具体执行的命令

clipboard.png
部署日志:

clipboard.png
服务端日志:
sshpass执行重启springboot项目命令后,无项目进程和项目日志文件;
2,【正常】通过ssh登录服务器后执行启动项目脚本
clipboard.png
可以正常启动项目
clipboard.png

项目启动脚本:erp.sh

#!/bin/bash
version="1.0.1";

appName="erp.jar"
if [ -z $appName ];then
    appName=`ls -t |grep .jar$ |head -n1`
fi

do_start()
{
        count=`ps -ef |grep java|grep $appName|wc -l`
        if [ $count != 0 ];then
                echo "Maybe $appName is running, please check it..."
        else
                echo "The $appName is starting..."
                cd /opt/tomcat && nohup java -jar ./$appName > /dev/null 2>&1 &
        fi
}

do_stop()
{
        appId=`ps -ef |grep java|grep $appName|awk '{print $2}'`
        if [ -z $appId ];then
            echo "Maybe $appName not running, please check it..."
        else
        echo "The $appName is stopping..."
        kill $appId
        fi
}

do_restart()
{
    do_stop
    for i in {5..1}
    do
        echo -n "$i "
        sleep 1
    done
    echo 0
    do_start
    for i in {15..1}
    do
        echo -n "$i "
                sleep 1
    done
    echo 0
}

do_status()
{
    appId=`ps -ef |grep java|grep $appName|awk '{print $2}'`
        if [ -z $appId ]
        then
            echo -e "\033[31m Not running \033[0m"
        else
            echo -e "\033[32m Running [$appId] \033[0m"
        fi
}

do_usage()
{
    echo "Usage: $0 {start|stop|restart|status|stop -f}"
    echo "Example: $0 start"
    exit 1
}

case $1 in
        start)
        do_start
        ;;

        stop)
        do_stop
        ;;

        restart)
                do_restart
        ;;

        status)
                do_status
        ;;

        *)
                do_usage
        ;;
esac

请问可能是什么原因导致的这个问题,有什么方法可以解决这个问题,或有什么其他spring boot自动构建部署的方法;

阅读 5.7k
2 个回答

sshpass 执行sh脚本一定要在脚本所在文件夹下执行 bash命令

如下: 我的脚本在/data/$project_name/下
sshpass -p '$passwd' ssh -o StrictHostKeyChecking=no '$user'@'$environment' "cd /data/$project_name && sh server.sh restart"

推荐问题