一.常见打包方式
1.1 普通打包方式
java -jar 15-spt-bulid-jar-1.0-SNAPSHOT.jar
特点:当前ssh窗口被锁定,可按CTRL + C打断程序运行,或直接关闭窗口,程序退出
1.2 后台运行方式
java -jar 15-spt-bulid-jar-1.0-SNAPSHOT.jar &
&代表在后台运行。
特定:当前ssh窗口不被锁定,但是当窗口关闭时,程序中止运行。
继续改进,如何让窗口关闭时,程序仍然运行?
1.3 后台不挂断运行方式
nohup java -jar 15-spt-bulid-jar-1.0-SNAPSHOT.jar &
nohup 意思是不挂断运行命令,当账户退出或终端关闭时,程序仍然运行
当用 nohup 命令执行作业时,缺省情况下该作业的所有输出被重定向到nohup.out的文件中,除非另外指定了输出文件。
1.4 后台不挂断且日志输入指定文件运行方式
nohup java -jar 15-spt-bulid-jar-1.0-SNAPSHOT.jar >temp.txt &
command >out.file 是将command的输出重定向到out.file文件,即输出内容不打印到屏幕上,而是输出到out.file文件中。
可通过jobs命令查看后台运行任务
1.5 后台不挂断且日志输入指定文件且错误输入到标准输出中的运行方式
nohup java -jar /home/portal/backstage/portal-1.0-SNAPSHOT.jar > nohup.out 2>&1 &
命令详解
1.nohup java -jar /home/portal/backstage/portal-1.0-SNAPSHOT.jar > nohup.out #不挂断运行portal-1.0-SNAPSHOT.jar这个jar,输出结果重定向到当前目录的nouhup.out 文件当中
2.最后的&
表示后台运行
3 .2>&1
:
0
表示键盘输入,
1
屏幕输出即标准输出,
2
表示错误输出。
其中
2>&1
表示将错误信息重定向到标准输出
2>1
会将错误信息重定向到文件1里面这是二者表示的含义
1.6 配置文件和jar包平级
1.nohup后台启动,输出启动日志到nohup.log文件
nohup java -jar -Dfile.encoding=utf-8 -Dspring.config.location=application-prod.properties ewdservice-0.0.1-SNAPSHOT.jar > nohup.out 2>&1 &
nohup java -jar -Dfile.encoding=utf-8 -Dspring.config.location=/root/export/servers/jiaoben/application.yml /root/export/servers/jiaoben/test-jar.jar > nohup.out 2>&1 &
2.nohup后台启动,输出启动日志到nohup.log文件
nohup java -jar -Dfile.encoding=utf-8 -Dspring.config.location=application-prod.properties ewdservice-0.0.1-SNAPSHOT.jar >/dev/null 2>&1 &
3.设定端口和上下文路径
java -jar 13-spt-config-load-order-1.0-SNAPSHOT.jar --server.port=9092 --server.servlet.context-path=/hello
1.7 nohup、&、 2>&1
1. nohup
放在命令的开头,表示不挂起(no hang up),也即,关闭终端或者退出某个账号,进程也继续保持运行状态,一般配合&符号一起使用。如nohup command &。
2. 2>&1 &
这里先看一下 shell里面几个数字的含义
/dev/null 表示空设备文件
0 表示stdin标准输入
1 表示stdout标准输出
2 表示stderr标准错误
> file 表示将标准输出输出到file中,也就相当于 1>file
2> error 表示将错误输出到error文件中
2>&1 也就表示将错误重定向到标准输出上
2>&1 >file :错误输出到终端,标准输出重定向到文件file,等于 > file 2>&1(标准输出重定向到文件,错误重定向到标准输出)。
& 放在命令到结尾,表示后台运行,防止终端一直被某个进程占用,这样终端可以执行别到任务,配合 >file 2>&1可以将log保存到某个文件中,但如果终端关闭,则进程也停止运行。如 command > file.log 2>&1 & 。