如何在本地一鍵安裝、重啟Linux伺服器和遠端debug除錯程式碼 idea
背景
在一些Linux測試環境下經常報出莫名其妙的bug,傳統做法在測試伺服器上除錯bug需要不停手動輸命令,並且看日誌也非常不方便。
本次通過idea外掛就可以達到一鍵啟動,在本地除錯程式碼一樣。
以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,存在返回0
if [ -z "${pid}" ]; then
return 1
else
return 0
fi
}
#啟動方法
start(){
is_exist
if [ $? -eq "0" ]; then
echo "${APP_NAME} is already running. pid=${pid} ."
else
echo "--------${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" ]
do
pid=`ps -ef|grep $APP_NAME|grep -v grep|awk '{print $2}'`
done
echo "${APP_NAME} pid is $pid"
echo "--------${APP_NAME} 啟動成功--------------"
#tail -f fileserver-web.out
fi
}
#停止方法
stop(){
is_exist
if [ $? -eq "0" ]; then
kill -9 $pid
echo "${APP_NAME} is stoped"
else
echo "${APP_NAME} is not running"
fi
}
#輸出執行狀態
status(){
is_exist
if [ $? -eq "0" ]; then
echo "${APP_NAME} is running. Pid is ${pid}"
else
echo "${APP_NAME} is NOT running."
fi
}
#重啟
restart(){
stop
start
}
#根據輸入引數,選擇執行對應方法,不輸入則執行使用說明
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程式,出現這個介面就能直接打斷點進行除錯了。之後和本地開發非常接近了,非常實用。
相關文章
- 使用IDEA遠端debug除錯Idea除錯
- java Remote Debug(遠端除錯)JavaREM除錯
- debug技巧之遠端除錯除錯
- 本地除錯遠端服務除錯
- 使用Intellij IDEA遠端除錯Spark程式IntelliJIdea除錯Spark
- IDEA、ECLIPSE遠端除錯IdeaEclipse除錯
- 使用IDEA進行遠端除錯Idea除錯
- 一路踩坑,被迫聊聊 C# 程式碼除錯技巧和遠端除錯C#除錯
- 遠端除錯伺服器python程式碼解決方案除錯伺服器Python
- IDEA如何快速地切換git分支程式碼,本地和遠端的IdeaGit
- VS - 打斷點/本地除錯/遠端除錯 問題斷點除錯
- debug技巧之本地除錯除錯
- phpstorm 遠端除錯 homstead 程式碼PHPORM除錯
- IntelliJ IDEA遠端除錯Elasticsearch6.1.2IntelliJIdea除錯Elasticsearch
- Pycharm同步遠端伺服器除錯PyCharm伺服器除錯
- 用WinDBG遠端除錯程式除錯
- vsc 如何除錯遠端python程式碼除錯Python
- 一看便知_linux安裝redis和除錯LinuxRedis除錯
- 如何在 Linux 上安裝、配置 NTP 伺服器和客戶端?Linux伺服器客戶端
- linux遠端工具vnc啟用,linux遠端工具vnc如何啟用,Linux安裝vnc教程。LinuxVNC
- linux安裝redis和遠端連線LinuxRedis
- Pycharm連線遠端伺服器並實現遠端除錯PyCharm伺服器除錯
- envoy 本地拉取遠端程式碼
- windows上通過IDA遠端除錯linux程式Windows除錯Linux
- vnc遠端安裝,在Linux中vnc遠端安裝的教程VNCLinux
- Git 操作——如何刪除本地分支和遠端分支Git
- Pycharm遠端除錯PyCharm除錯
- 前端遠端除錯前端除錯
- chrome 遠端除錯Chrome除錯
- 三步教你實現MyEclipse的debug遠端除錯Eclipse除錯
- Linux系統下執行Jar包以及idea遠端除錯jar包LinuxJARIdea除錯
- 八、hive3.1.2 安裝及其配置(本地模式和遠端模式)Hive模式
- IDEA的debug除錯--基礎小白篇Idea除錯
- 如何在本地克隆遠端github倉庫Github
- 遠端除錯 Android 裝置網頁除錯Android網頁
- 如何在命令列下遠端安裝終端服務命令列
- 【譯文】使用Rstudio除錯程式碼(debug)除錯
- ChatTTS:Win11本地安裝和一鍵執行包!TTS