背景

在一些Linux测试环境下经常报出莫名其妙的bug,传统做法在Linux测试服务器上调试bug需要不停手动输命令,并且看日志也非常不方便。

本次通过idea插件就可以达到一键启动,dbug操作起来和在本地调试代码一样。

以idea和maven项目为例子。

插件

https://www.aliyun.com/product/cloudtoolkit

可以直接在Idea里下载Alibaba Cloud Toolkit

之后,需要注册一个阿里云账号,注册完在阿里云教程直接就能拿到app_id和app_secret作为调用第三方接口的安全凭证。

装完插件后重启,之后打开设置填入即可。

新增配置连接的host列表,账号密码之类的。。。

阿里云插件能帮忙自动install并上传到服务器,但是需要自己指定如何启动,所以先编写一段脚本用于启动

同时也需要加一些额外的参数来完成远程debug的功能。

先在maven项目下加上debug插件

<!--远程debug--><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><jvmArguments>-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005</jvmArguments></configuration><executions><execution><goals><goal>repackage</goal></goals></execution></executions></plugin>

接着写一段脚本文件放到linux下,我命名为level.sh了,注意脚本文件的路径。

需要注意这下面一行,和maven里端口的对应。

nohup java -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=5005,suspend=n -jar $APP_NAME >> log.out 2>&1 &

有了这段脚本文件,命令:sh /xxx/xxx/level.sh restart  (xxx表示jar包和脚本放的位置)就能完成重启,并且带上远程debug jvm的功能。

#!/bin/bash
#这里可替换为你自己的执行程序,其他代码无需更改
APP_NAME=wage-level-survey-0.0.1-SNAPSHOT.jar
cd `dirname $0`
#使用说明,用来提示输入参数
usage(){echo "Usage: sh act.sh [start|stop|restart|status]"exit 1
}
#检查程序是否在运行
is_exist(){pid=`ps -ef|grep $APP_NAME|grep -v grep|awk '{print $2}' `#如果不存在返回1,存在返回0if [ -z "${pid}" ]; thenreturn 1elsereturn 0fi
}#启动方法
start(){is_existif [ $? -eq "0" ]; thenecho "${APP_NAME} is already running. pid=${pid} ."elseecho "--------${APP_NAME} 开始启动--------------"nohup java -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=5005,suspend=n -jar $APP_NAME >> log.out 2>&1 &echo "${APP_NAME} is start success"pid=`ps -ef|grep $APP_NAME|grep -v grep|awk '{print $2}'`until [ -n "$pid" ]dopid=`ps -ef|grep $APP_NAME|grep -v grep|awk '{print $2}'`  doneecho "${APP_NAME} pid is $pid" echo "--------${APP_NAME} 启动成功--------------"#tail -f fileserver-web.outfi
}#停止方法
stop(){is_existif [ $? -eq "0" ]; thenkill -9 $pidecho "${APP_NAME} is  stoped"elseecho "${APP_NAME} is not running"fi
}#输出运行状态
status(){is_existif [ $? -eq "0" ]; thenecho "${APP_NAME} is running. Pid is ${pid}"elseecho "${APP_NAME} is NOT running."fi
}#重启
restart(){stopstart
}#根据输入参数,选择执行对应方法,不输入则执行使用说明
case "$1" in"start")start;;"stop")stop;;"status")status;;"restart")restart;;*)usage;;
esac

之后在run/Debug处添加阿里云的运行程序,如图所示,Target Direcotry为jar包或者war包的位置(/xxx/xxx/)After deploy为自动上传后自动运行的命令,一般来说都是重启命令,比如本次的sh /xxx/xxx/level.sh restart

之后添加远程debug的运行程序。

先运行阿里云的自动部署,完成之后再运行远程debug

这个界面表示自动部署完成,之后点open termial 打开终端,Idea的终端对程序员太友好了,可以直接定位错误代码的位置

最主要的是点击就能直接定位代码行位置,非常方便。

之后启动远程debug程序,出现这个界面就能直接打断点进行调试了。之后和本地开发非常接近了,非常实用。

如何在本地一键安装、重启Linux服务器和远程debug调试代码 idea相关推荐

  1. linux lanmp 安装教程,linux服务器一键安装包lanmp系列教程之一

    在我们安装了linux服务器WEB环境一键安装包lanmp后,可能会有不少疑问还有就是使用过程中出现的问题,下面为大家总结几点比较常见的,如若还有其他疑问,可到wdlinux论坛寻找相关教程. 1.如 ...

  2. 重启linux服务器

    今天打开项目的时候,发现我的管理系统登录不上去了,立马打开F12查看一下倒是是啥子情况吗,然后发现了有以下的报错:点进去仔细看了一下,登录接口直接报错500, 我在想,是不是服务器又挂了,不太总是麻烦 ...

  3. 在不重启Linux服务器的情况下在线识别新添加的磁盘

    前言  在我们使用 Linux系统的过程中,有时会因为初始时磁盘空间的分配不足,使用中途需要将挂载点扩容的情况,这时候就需要我们挂载新的磁盘到服务器上,但是如果我们在 Linux 运行过程中挂载新磁盘 ...

  4. linux服务器关机后计划任务还能进行,宝塔面板计划任务定时安全重启Linux服务器实例操作...

    这篇文章主要为大家详细介绍了宝塔面板计划任务定时安全重启Linux服务器实例操作,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,有需要的朋友可以收藏方便以后借鉴. 宝塔面板有很多"神&q ...

  5. Linux服务器的远程操作

    title: Linux服务器的远程操作 使用xshell进行远程连接 百度网盘 请点死我 提取码 bqpx 常用的EXE xshell 操作命令 xftp 传输文件 打开xshell默认为本地系统c ...

  6. 服务器怎么连接?服务器远程连接图文教程Windows如何远程连接服务器?Linux服务器如何远程登录?远程连接服务器命令

    服务器怎么连接?服务器远程连接图文教程 Windows如何远程连接服务器?Linux服务器如何远程登录?远程连接服务器命令 服务器操作系统可以实现对计算机硬件与软件的直接控制和管理协调,任何计算机的运 ...

  7. Windows下如何使用VScode连接远程linux服务器进行远程开发

    Windows下如何使用VScode连接远程linux服务器进行远程开发 1. 先上手-成功连接 1.vscode下载安装所需插件:vscode中的remote-ssh插件 安装之后,就会出现上图黄色 ...

  8. Pycharm连接Linux服务器进行远程开发

    Pycharm连接Linux服务器进行远程开发 1.电脑创建空文件夹并用Pycharm打开 2.Pycharm配置Deployment 3.配置SFTP 验证可成功连接 4.配置项Linux项目路径 ...

  9. Linux 服务器高级编程ET LT代码

    linux 服务器高级编程ET LT代码 #include<sys/types.h> #include<sys/socket.h> #include<netinet/in ...

  10. linux命令一键卸载nginx,linux服务器nginx的卸载和安装

    刚接触的linux服务器上,nginx配置乱的有点令人发指,就把老的卸载了重新装一下. 卸载 linux有一系列的软件管理器,比如常见的linux下的yum.Ubuntu下的apt-get等等.通过这 ...

最新文章

  1. 渥太华大学药学院院长Daniel Figeys团队诚邀药物-微生物组方向博士后
  2. 产品网络推广浅析网站在优化时文章标题撰写要注意哪些事项?
  3. 安装batocera-linux教程_batocera游戏系统,一个U盘搞定所有模拟器
  4. 独占电脑装linux,旧电脑如何处理?装Tiny Core,极致精简,超低CPU占用,你敢试吗...
  5. oracle创建dblink语句_一文看懂Oracle12c中多租户(容器)从种子创建PDB
  6. 在Android中使用FlatBuffers
  7. android q测试机型,小米9安卓Q系统刷机包开启测试 小米Android Q适配机型一览
  8. IntelliJ IDEA:使用Google Guava生成equals,hashCode和toString
  9. 常用-开发框架【转】
  10. python语言程序设计 梁勇_计算机二级教程 Python语言程序设计,第9章Python标准库概览...
  11. servlet中文乱码_Servlet入门 信息过滤
  12. 15.3D效果,盒阴影和滤镜
  13. CentOS上安装软件错误提示:configure: error: no acceptable C compiler found in $PATH
  14. 排列算法 C++实现
  15. keepalived配置参数官方文档中文翻译版
  16. jq过滤替换敏感词_如何用python简单过滤敏感信息
  17. win10计算机不分区,win10有必要分区吗
  18. 海龟编程计算机,第一个海龟程序
  19. 工作日时间差/考勤计算(SQL 自定义函数)
  20. 文件无访问权限解决办法

热门文章

  1. java if if else语句_Java if else条件判断语句用法
  2. take android,Protake
  3. linux build bash,Win10 Build 14316启用Linux Bash 环境图文教程
  4. 鸿蒙官网首页,鸿蒙官网-鸿蒙手游官网首页最新版预约 v1.0-优盘手机站
  5. k-means 及其改进 数库
  6. 类的可访问性(C++)
  7. 多小区下小区上行速率的计算(2)
  8. android 监听网络的详细例子,android 短信 发送 监听 拦截等自己写的demo
  9. faceframe kinect2.0 api 注意点
  10. apt-get install的默认安装路径是什么