服务器使jar包始终运行,首次启动慢的解决方案

目录

 

一、服务器使jar包始终运行

二、SpringBoot启动jar首次启动慢的解决方案


一、服务器使jar包始终运行

把java程序打成jar包后,在服务器终端执行,如果使用java -jar xxxx.jar执行,

当我们退出终端的时候,xxxx.jar这个程序也会停止。

为了保证程序能够一直运行,应该改为这样运行:nohup java -jar xxx.jar&命令,则程序会在后台一直运行

 原因是:

直接启动jar文件,在当前会话进程中开启一个子进程来运行程序,这个子进程会随着会话进程的结束而结束。这种情况适合短时间测试用。

nohup的意思是不挂断,只需在要处理的命令前加上 nohup 即可,标准输出和标准错误缺省会被重定向到 nohup.out 文件中。一般我们可在结尾加上"&"来将命令同时放入后台运行,也可用">filename2>&1"来更改缺省的重定向文件名。这种情况适合在生产环境长时间运行。

nohup启动可以采用如下两种方式:

# 把标准输出重定向到空设备,即只输出错误信息到日志文件
nohup java -jar app.jar >/dev/null 2>log & 
# 把标准输出和标准错误全重定向到空设备,即不输出日志
nohup java -jar app.jar >/dev/null 2>&1 & 

1.   >/dev/null

这条命令的作用是将标准输出1重定向到/dev/null中。 /dev/null代表linux的空设备文件,所有往这个文件里面写入的内容都会丢失,俗称“黑洞”。那么执行了>/dev/null之后,标准输出就会不再存在,没有任何地方能够找到输出的内容。

2.   2>&1

这条命令用到了重定向绑定,采用&可以将两个输出绑定在一起。这条命令的作用是错误输出将和标准输出同用一个文件描述符,说人话就是错误输出将会和标准输出输出到同一个地方。

linux在执行shell命令之前,就会确定好所有的输入输出位置,并且从左到右依次执行重定向的命令,所以>/dev/null 2>&1的作用就是让标准输出重定向到/dev/null中(丢弃标准输出),然后错误输出由于重用了标准输出的描述符,所以错误输出也被定向到了/dev/null中,错误输出同样也被丢弃了。执行了这条命令之后,该条shell命令将不会输出任何信息到控制台,也不会有任何信息输出到文件中。

二、SpringBoot启动jar首次启动慢的解决方案

解决办法 编辑 /usr/java/jdk/jdk1.8.0_211/jre/lib/security/下的java.security 文件
securerandom.source=file:/dev/random
改为
securerandom.source=file:/dev/./random
这样就是一个非租塞

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章