快速导航
.bat 部分代码详解
@echo off
:: 定义一个方法名为functionName的方法
:functionName
echo "你好世界 123"
goto :eof
:: 调用该方法
call :functionName
@pause
Windows服务器 .bat
@echo off
echo "本脚本运行需要当前机器支持jps命令。
:: 使用前,自行修改Jar包名(AppName),端口(AppRunPort),修改JVM启动参数(JVM_OPTS)即可运行"
set AppName=digital-designer-api.jar
set AppRunPort=9099
title 启动后端:%AppName%
:: 注意不得使用双引""把字符串参数参数包起来!这样会导致命令行变成java -jar "xxxx"。
:: 定义JVM参数 可去https://docs.oracle.com/javase/8/docs/technotes/tools/unix/java.html 查看你不理解的参数
:: ① JVM_OPTS 水平写法
:: set JVM_OPTS=-Dname=%AppName% -Dspring.profiles.active=dev -Djava.net.preferIPv4Stack=true -Duser.timezone=GMT+08 -Dserver.port=%AppRunPort%
:: ② JVM_OPTS 垂直写法(最后一项不得有 ^,这样可以避免拼接其他命令)
set JVM_OPTS=-Dname=%AppName% ^
-Dspring.profiles.active=dev ^
-Djava.net.preferIPv4Stack=true ^
-Duser.timezone=GMT+08 ^
-Dserver.port=%AppRunPort%
ECHO.
ECHO. [1] 启动 %AppName%
ECHO. [2] 关闭 %AppName%
ECHO. [3] 重启 %AppName%
ECHO. [4] 查看状态 %AppName%
ECHO. [5] 退 出
ECHO.
ECHO.
set /p ID=请输入选择项目的序号:
IF "%id%"=="1" GOTO start
IF "%id%"=="2" GOTO stop
IF "%id%"=="3" GOTO restart
IF "%id%"=="4" GOTO status
IF "%id%"=="5" EXIT
PAUSE
:start
for /f "usebackq tokens=1-2" %%a in (`jps -l ^| findstr %AppName%`) do (
set pid=%%a
set image_name=%%b
)
if defined pid (
echo %image_name% is already running 这将会导致%AppName%无法正常启动
PAUSE
)
rem start javaw %JAVA_OPTS% -jar %AppName% rem --server.port=%AppName%
echo 启动参数如下:%JVM_OPTS%
:: echo %AppName%
java %JVM_OPTS% -jar %AppName%
echo starting……
echo Start %AppName% success...
goto:eof
rem 函数stop通过jps命令查找pid并结束进程
:stop
for /f "usebackq tokens=1-2" %%a in (`jps -l ^| findstr %AppName%`) do (
set pid=%%a
set image_name=%%b
)
if not defined pid (echo process %AppName% does not exists) else (
echo prepare to kill %image_name%
echo start kill %pid% ...
rem 根据进程ID,kill进程
taskkill /f /pid %pid%
)
goto:eof
:restart
call :stop
call :start
goto:eof
:status
for /f "usebackq tokens=1-2" %%a in (`jps -l ^| findstr %AppName%`) do (
set pid=%%a
set image_name=%%b
)
if not defined pid (echo process %AppName% is dead ) else (
echo %image_name% is running
@pause
)
goto:eof
Linux服务器 .sh 会单独记录GC日志
#!/bin/sh
# author name:zanglikun
# author QQ:740969606
#echo $0 start 是启动服务
#echo $0 stop 是停止服务
#echo $0 restart 是重启服务
#echo $0 status 是查看服务状态
# $0 是文件名
# $1 是第一个参数
# 指定JAR包文件夹,将来运行的时候,此文件需要与jar包同级
AppName=chat2db-server-start
JarName=chat2db-server-start.jar
# JVM参数 可去https://docs.oracle.com/javase/8/docs/technotes/tools/unix/java.html 了解不知道的参数
JVM_OPTS="-Dname=$AppName \
-Duser.timezone=Asia/Shanghai \
-Xms1024M -Xmx1024M \
-Dspring.profiles.active=release"
# 此变量会获取到当前路径 等价于 Linux的pwd命令
APP_HOME=`pwd`
# echo $APP_HOME
# 日志路径 一定要有此路经,没有此路径的文件夹,将不会有日志文件,记得创建logs文件夹。
LOG_DIR=$APP_HOME/logs/
LOG_PATH=$APP_HOME/logs/$AppName.log
# 获取第一个参数 如果为空,将会提示这个
if [ "$1" = "" ];
then
echo -e "\033[0;31m 未输入操作名 \033[0m \033[0;34m {start|stop|restart|status} \033[0m"
exit 1
fi
# 如果没有指定JAR包,将会提示这个
if [ "$AppName" = "" ];
then
echo -e "\033[0;31m 未输入应用名 \033[0m"
exit 1
fi
# start方法
function start()
{
# 获取PID,最后打印出结果$2 就是PID 注意,此处$2不是我们运行此脚本的第二个参数($0 不算做第一个参数)!
PID=`ps -ef |grep java|grep $AppName|grep -v grep|awk '{print $2}'`
if [ x"$PID" != x"" ]; then
echo "$AppName is running..."
else
mkdir -p $LOG_DIR
nohup java -jar $JVM_OPTS $JarName > $LOG_PATH 2>&1 &
# 下面可以查看一下命令对不对
#echo "nohup java -jar $JVM_OPTS $AppName > $LOG_PATH 2>&1 &"
echo "Start $AppName success..."
jps -lv
fi
}
# stop方法
function stop()
{
echo "Stop $AppName"
PID=""
# 定制查询服务PID的方法
query(){
PID=`ps -ef |grep java|grep $AppName|grep -v grep|awk '{print $2}'`
}
# 第一次查询状态,更变PID
query
if [ x"$PID" != x"" ]; then
kill -TERM $PID
echo "$AppName (pid:$PID) exiting..."
while [ x"$PID" != x"" ]
do
# 间隔1秒执行后续代码
sleep 1
# 这是一个死循环,检查每一次PID,都会更变PID的最新结果,如果PID等于空了,就结束循环,输出结束
query
done
echo "$AppName exited."
else
echo "$AppName already stopped."
fi
}
# restart方法 注意方法内部的内容:调用了2个别的方法,所以从脚本加载从上倒下的顺序上,这2个方法,都要在此方法的代码之前!
function restart()
{
# 先停止服务,然后等待2秒后,再次重启服务,不过2秒时间太短,建议久一点
stop
sleep 2
start
}
# status方法
function status()
{
# 获取PID
PID=`ps -ef |grep java|grep $AppName|grep -v grep|wc -l`
# 如果PID为0,代表服务器停止,不为0,就代表服务器正在运行
if [ $PID != 0 ];then
echo "$AppName is running..."
else
echo "$AppName is not running..."
fi
}
# 获取第一个参数,执行不同的方法!
case $1 in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
status)
status
;;
*)
esac
脚本使用方式请参考:https://www.zanglikun.com/6182.html#use
特殊说明:
上述文章均是作者实际操作后产出。烦请各位,请勿直接盗用!转载记得标注原文链接:www.zanglikun.com
第三方平台不会及时更新本文最新内容。如果发现本文资料不全,可访问本人的Java博客搜索:标题关键字。以获取最新全部资料 ❤
第三方平台不会及时更新本文最新内容。如果发现本文资料不全,可访问本人的Java博客搜索:标题关键字。以获取最新全部资料 ❤
评论(0)