一、jar形式部署
1. java -jar xxxxxx.jar
这种方式的启动,linux只会短暂的运行该项目,当退出控制台后会自动关闭该项目。
2. nohup java -jar xxxxxxx.jar >日志文件名.log 2>&1 &
命令详解:
- nohup:不挂断地运行命令,退出帐户之后继续运行相应的进程。如果未安装请执行 yum install coreutils 。
-
>日志文件名.log:是nohup把command的输出重定向到当前目录的指定的“日志文件名.log”文件中,即输出内容不打印到屏幕上,而是输出到”日志文件名.log”文件中。不指定文件名会在当前目录创建nohup.out,如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中。如果没有文件能创建或打开以用于追加,那么 Command 参数指定的命令不可调用。
- 2>&1:2就是标准错误,1是标准输出,该命令相当于把标准错误重定向到标准输出么。这里&相当于标准错误等效于标准输出,即把标准错误和标准输出同时输出到指定的“日志文件名.log”文件中。
- &:让该作业在后台运行。
3. shell
平时我们用的最多的shell来启动、停止项目。
启动方法:app.sh start 会自动生成catalina.log(文件名称可以自行修改脚本) 文件可供查阅日志
查阅实时日志方法:tail -f catalina.log
停止方法:app.sh stop 会杀掉当前目录下的服务进程
重启方法:app.restart 平滑重启服务
查询状态:app.status
app.sh内容如下:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#!/bin/bash version="6.6.6"; appName=$2 if [ -z $appName ];then # 搜索目录下的jar,还是一个项目一个文件夹,一个文件内有jar包和该sh文件 appName=`ls -t |grep .jar$ |head -n1` fi ## 后台启动项目 自动生成 catalina.log日志文件 function 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..." nohup java -jar ./$appName -XX:+UseG1GC -XX:+HeapDumpOnOutOfMemoryError -Xms512M -Xmx4G > catalina.log 2>&1 & fi } ## 停止项目 function 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 } ##重启项目(平滑启动) function restart() { # get release version releaseApp=`ls -t |grep .jar$ |head -n1` # get last version lastVersionApp=`ls -t |grep .jar$ |head -n2 |tail -n1` appName=$lastVersionApp stop for i in {5..1} do echo -n "$i " sleep 1 done echo 0 backup appName=$releaseApp start } function backup() { # get backup version backupApp=`ls |grep -wv $releaseApp$ |grep .jar$` # create backup dir if [ ! -d "backup" ];then mkdir backup fi # backup for i in ${backupApp[@]} do echo "backup" $i mv $i backup done } ## 查看项目当前状态 function status() { appId=`ps -ef |grep java|grep $appName|awk '{print $2}'` if [ -z $appId ] then echo -e "