rz
# 使用rz或其它工具将jar包上传到服务器指定目录ps
# 查看jar包进程,并记录进程id ps -aux | grep demo-0.0.1-SNAPSHOT.jarkill
# 结束之前项目的进程 kill 进程idnohup
# 后台进程启动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.jpgkill命令可以带信号号码选项,也可以不带。如果没有信号号码,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)
启动命令: 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.logshell 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 ##############################"