sshpass执行sh shell脚本不能启动springboot项目,但ssh登录后执行sh sheel脚本启动正常
问题:通过sshpass自动登录linux服务器,通过sh执行sheel脚本不能启动springboot项目,但通过ssh登录linux服务器后通过sh执行sheel脚本可以正常启动springboot项目;
详细信息:
1,【异常】通过sshpass执行启动项目脚本
Jenkinsfile:sshpass具体执行的命令
部署日志:
服务端日志:
sshpass执行重启springboot项目命令后,无项目进程和项目日志文件;
2,【正常】通过ssh登录服务器后执行启动项目脚本
可以正常启动项目
项目启动脚本: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自动构建部署的方法;
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
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 款开发者工具
目前通过Cloud Toolkit可以自动部署到服务器上,并启动项目
Cloud Toolkit将应用部署到服务器