一、步骤
1、将可启动的javaweb项目打包成jar包,得到xxx.jar文件;
2、我使用的是虚拟机,启动虚拟机后,用FileZilla连接到该服务器(该虚拟机服务器上搭好了jdk、tomcat等环境)。
3、将sh文件通过FileZilla拷贝到某路径下(随意,我的是/usr/demo)
shell脚本如下:start2.sh文件
#! /bin/sh
java -jar quartz-adg-0.0.1-SNAPSHOT.jar >/usr/demo/nohup.out&
tail -40f nohup.out
!此处要注意,我是在windows环境下新建的,格式是dos,需要在Linux中vim打开,执行 :set ff=unix 再保存退出 即可更改格式。
其中/usr/demo/nohup.out&是生成的日志文件的路径。
4、将xxx.jar文件拷贝至sh文件相同路径。(在FileZilla拖过去就行)
5、Linux进入/usr/demo文件所在路径,执行start2.sh文件
执行方法:
chmod +x ./xxx.sh #使脚本具有执行权限
./xxx.sh #执行脚本
6、成功效果图:
二、相关命令语法
1、tail
命令格式:tail[必要参数][选择参数][文件]
tail [ -f ] [ -c Number | -n Number | -m Number | -b Number | -k Number ] [ File ]
参数:
-f 循环读取
-q 不显示处理信息
-v 显示详细的处理信息
-c<数目> 显示的字节数
-n<行数> 显示行数
--pid=PID 与-f合用,表示在进程ID,PID死掉之后结束.
-q, --quiet, --silent 从不输出给出文件名的首部
-s, --sleep-interval=S 与-f合用,表示在每次反复的间隔休眠S秒
在本脚本中 tail -40f 的含义是读取日志文件中最后40行内容,打印显示到命令窗口,如果把 tail -40f nohup.out 该行去掉,执行完启动脚本后就不会再打印日志内容。
2、nohup
(SIGHUP挂起信号,SIGINT中断信号)
&的意思是在后台运行,当你在执行 ./a.out & 的时候, 即使你用ctrl C, 那么a.out照样运行(因为对SIGINT信号免疫)。 但是要注意, 如果你直接关掉shell后, 那么, a.out进程同样消失。 可见, &的后台并不硬(因为对SIGHUP信号不免疫)。
nohup的意思是忽略SIGHUP信号, 所以当运行nohup ./a.out的时候, 关闭shell, 那么a.out进程还是存在的(对SIGHUP信号免疫)。 但是, 要注意, 如果你直接在shell中用Ctrl C, 那么, a.out进程也是会消失的(因为对SIGINT信号不免疫)
&和nohup没有关系, 要让进程真正不受shell中Ctrl C和shell关闭的影响, 就用 nohua ./a.out & 有点让a.out成为守护进程的感觉。
3、重定向
执行命令后不再在屏幕上显示输出结果,而是把输出结果放到了指定的文件中,所以叫重定向。(把本身应该输出在屏幕上的内容写进文本)
如果希望执行某个命令,但又不希望在屏幕上显示输出结果,那么可以将输出重定向到 /dev/null;
$ command > /dev/null 2>&1