流程概要
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 ##############################"