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

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

【Java】sshpass执行sh shell脚本不能启动springboot项目,但ssh登录后执行sh sheel脚本启动正常
部署日志:

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

项目启动脚本: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自动构建部署的方法;

回答

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

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

正在尝试使用Cloud Toolkit自动部署 阿里巴巴程序员常用的 15 款开发者工具

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

目前通过Cloud Toolkit可以自动部署到服务器上,并启动项目
【Java】sshpass执行sh shell脚本不能启动springboot项目,但ssh登录后执行sh sheel脚本启动正常
Cloud Toolkit将应用部署到服务器

以上是 【Java】sshpass执行sh shell脚本不能启动springboot项目,但ssh登录后执行sh sheel脚本启动正常 的全部内容, 来源链接: utcz.com/a/87845.html

回到顶部