Linux部署jar包命令大全

    科技2022-08-13  108

    流程概要

    rz

    # 使用rz或其它工具将jar包上传到服务器指定目录

    ps

    # 查看jar包进程,并记录进程id ps -aux | grep demo-0.0.1-SNAPSHOT.jar

    kill

    # 结束之前项目的进程 kill 进程id

    nohup

    # 后台进程启动jar包,并打印日志 nohup java -jar demo-0.0.1-SNAPSHOT.jar > server.log 2>&1 &

    tail

    # 查看启动日志 tail -f server.log

    命令

    上传/下载

    没有相关命令直接yum安装即可

    yum install lrzsz

    上传文件

    rz 常用参数:   -b # 以二进制方式,默认为文本方式。(Binary (tell it like it is) file transfer override.)   -e # 对所有控制字符转义。(Force sender to escape all control characters; normally XON, XOFF, DLE, CR-@-CR, and Ctrl-X are escaped.)   # 如果要保证上传的文件内容在服务器端保存之后与原始文件一致,最好同时设置这两个标志,如下所示方式使用:   rz -be -y # 覆盖上传,rz上传如果存在同名文件会上传失败,此时可使用-y进行覆盖上传

    下载

    sz # sz命令可以单下载一个文件,也可以多个文件同时下载 sz a.jpg b.jpg

    查看进程

    ps -aux | grep demo-0.0.1-SNAPSHOT.jar -aux # 显示所有包含其他使用者的行程 "|" # 管道符,命令格式:命令A|命令B,即命令A的正确输出作为命令B的操作对象。例如: ps aux | grep "demo" 在 ps aux中的結果中查找demo grep # 查找内容包含指定的范本样式的文件

    结束进程

    kill 进程id # kill[参数][进程号]

    kill命令可以带信号号码选项,也可以不带。如果没有信号号码,kill命令就会发出终止信号(15),这个信号可以被进程捕获,使得进程在退出之前可以清理并释放资源。也可以用kill向进程发送特定的信号

    kill可以带有进程ID号作为参数。当用kill向这些进程发送信号时,必须是这些进程的主人。如果试图撤销一个没有权限撤销的进程或撤销一个不存在的进程,就会得到一个错误信息。

    应注意,信号使进程强行终止,这常会带来一些副作用,如数据丢失或者终端无法恢复到正常状态。发送信号时必须小心,只有在万不得已时,才用kill信号(9),因为进程不能首先捕获它。要撤销所有的后台作业,可以输入kill 0。因为有些在后台运行的命令会启动多个进程,跟踪并找到所有要杀掉的进程的PID是件很麻烦的事。这时,使用kill 0来终止所有由当前shell启动的进程,是个有效的方法。

    说明:

    只有第9种信号(SIGKILL)才可以无条件终止进程,其他信号进程都有权利忽略。 下面是常用的信号:

    HUP 1 终端断线

    INT 2 中断(同 Ctrl + C)

    QUIT 3 退出(同 Ctrl + \)

    TERM 15 终止

    KILL 9 强制终止

    CONT 18 继续(与STOP相反, fg/bg命令)

    STOP 19 暂停(同 Ctrl + Z)

    启动jar包

    nohup java -jar demo-0.0.1-SNAPSHOT.jar > server.log 2>&1 & nohup # 放在命令的开头,表示不挂起(no hang up),关闭终端或者退出某个账号,进程也继续保持运行状态,一般配合&符号一起使用,如nohup command & java -jar demo-0.0.1-SNAPSHOT.jar # 启动jar包的命令 > # 重定向到一个文件,如果文件不存在则创建文件 0 表示stdin标准输入 1 表示stdout标准输出 2 表示stderr标准错误 2>&1 # 将错误重定向到标准输出上 & # 放在命令到结尾,表示后台运行,防止终端一直被某个进程占用,这样终端可以执行别的任务 拓展: >>>都属于输bai出重定向,<属于输入重定向 >会覆盖目标的原有bai内容。当文件存在时会先删除原文件,再重新创建文件,然后把内容写入该文件;否则直接创建文件。 >>会在目标原有内容后追加内容。当文件存在时直接在文件末尾进行内容追加,不会删除原文件;否则直接创建文件。

    查看日志

    tail -f server.log tail #用于查看文件的内容,有一个常用的参数 -f 常用于查阅正在改变的日志文件 命令格式: tail [参数] [文件] -f # 循环读取 -n # 显示行号 tail -n +20 server.log # 从第二十行显示到文末 tail -n 20 server.log # 查询二十行之后的所有日志 head head -n 20 server.log # 查询头二十行日志 head -n -20 server.log # 查询日志文件除了最后二十行的其它所有日志

    shell脚本

    启动命令: sh xxx.sh

    切记:编写shell脚本时,注意将文本的格式改为Unix

    Windows和Linux对于回车换行符的表示是不同的。Unix系统里,每行结尾只有“<换行>”,即“\n”;Windows系统里面,每行结尾是“<换行><回车>”,即“\n\r”。Windows文本文件中使用CR(回车\r)和 LF(换行\n)即CRLF,linux则是LF。记得转换。

    shell 1

    路径和参数都可自行修改

    操作:

    ​ 将sh脚本和jar包放置同一级目录

    作用:

    ​ 将查找需启动jar包是否存在进程,有则和平关闭,如被系统忽略,则强制结束进程。启动jar包并查看日志。

    #!/usr/bin/env bash #!/bin/sh RESOURCE_NAME=report.jar tpid=`ps -ef|grep $RESOURCE_NAME|grep -v grep|grep -v kill|awk '{print $2}'` if [ ${tpid} ]; then echo 'Stop Process...' kill -15 $tpid fi sleep 5 tpid=`ps -ef|grep $RESOURCE_NAME|grep -v grep|grep -v kill|awk '{print $2}'` if [ ${tpid} ]; then echo 'Kill Process!' kill -9 $tpid else echo 'Stop Success!' fi tpid=`ps -ef|grep $RESOURCE_NAME|grep -v grep|grep -v kill|awk '{print $2}'` if [ ${tpid} ]; then echo 'App is running.' else echo 'App is NOT running.' fi rm -f tpid nohup java -jar ./$RESOURCE_NAME > service.log 2>&1 & echo $! > tpid echo Start Success! tail -f ./service.log

    shell 2

    路径和参数都可自行修改

    操作:

    ​ 将sh脚本和jar包放入source_jar目录

    作用:

    ​ 检查是否存在备份文件夹,不存在则创建,将jar包备份到备份文件夹,并将jar包移动到指定目录,结束之前的启动进程,到该目录启动jar包并查看日志。

    JARFILE=report.jar DIR=/usr/local/java/job cur_dateTime="`date +%Y-%m-%d,%H:%m:%s`" echo "##################### backup ##############################" if [ ! -d $DIR/backup ];then mkdir -p $DIR/backup fi if [ -f "$DIR/$JARFILE" ] then mv $DIR/$JARFILE $DIR/backup/$JARFILE$cur_dateTime fi if [ -f "$DIR/source_jar/$JARFILE" ] then mv $DIR/source_jar/$JARFILE $DIR/ fi echo "##################### back end ##############################" echo "##################### stop old ##############################" pid=`ps -ef | grep $JARFILE | grep -v grep | awk '{print $2}'` if [ -n "$pid" ] then kill -9 $pid fi #debug_pid=`ps -ef | grep 9790 | grep -v grep | awk '{print $2}'` #if [ -n "$debug_pid" ] #then # kill -9 $debug_pid #fi echo "##################### stop old end ##############################" echo "##################### start ############################## " chmod +x $DIR/$JARFILE cd $DIR pwd #nohup java -jar $JARFILE >>server.log & #nohup java -jar -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=9790 $JARFILE >>server.log & nohup java -jar $JARFILE >>server.log & tail -f server.log sleep 1 echo "##################### start end ##############################"
    Processed: 0.014, SQL: 8