which java
ll /usr/bin/java
ll /etc/alternatives/java
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.262.b10-1.el7.x86_64/jre/bin/java
1.在/etc/rc.d/init.d目录下创建jar_auto.sh文件
vim /etc/rc.d/init.d/jar_auto.sh
添加以下内容
#!/bin/bash
#配置jdk的路径
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.262.b10-1.el7.x86_64/jre/bin/java #此处为我的java环境路径,需要改为自己的JDK路径
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
#有时需要把jar包延时启动(不设置延时启动jar,nacos会提示拒绝连接)
#延时10S运行jar包,需要延时启动则放开sleep注释行 (sleep+数字,表示延迟多少秒启动)
sleep 10
#配置jar包启动的路径 日志生成路径 nohup表示静默启动,不在窗口显示启动日志
nohup java -jar -Xms512M -Xmx1024M -XX:PermSize=512M -XX:MaxPermSize=1024M /home/ruoyi/projects/ruoyi/ruoyi-admin.jar > /home/ruoyi/projects/ruoyi/ry-vue.log&
nohup java -jar -Xms512M -Xmx1024M -XX:PermSize=512M
-XX:MaxPermSize=1024M jar包名.jar > jar启动日志.log&
优化详解:
1、-Xms:表示java虚拟机堆区内存初始内存分配的大小,通常为操作系统可用内存的1/64大小即可,但仍需按照实际情况进行分配。
2、-Xmx: 表示java虚拟机堆区内存可被分配的最大上限,通常为操作系统可用内存的1/4大小。
3、-XX:PermSize:表示非堆区初始内存分配大小,其缩写为permanent size(持久化内存)。
4、-XX:MaxPermSize:表示对非堆区分配的内存的最大上限。即jar进程启动后可占用服务器的最大内存。
2.为jar_auto自启动脚本赋予执行权限
chmod +x 命令表示将该文件设置为可执行的文件
jar_auto.sh,在/etc/rc.d/init.d目录下,所有要在该目录下执行赋予可执行的权限指令。
chmod +x /etc/rc.d/init.d/jar_auto.sh
3.编辑/etc/rc.d目录下的rc.local文件,为jar脚本赋予开机自启动权限
vim /etc/rc.d/rc.local
添加的内容如下:
/etc/rc.d/init.d/jar_auto.sh
4.将jar自启动目录添加到rc.local文件后,需要为文件重新赋予执行权限,执行以下命令:
chmod +x /etc/rc.d/rc.local
5.重启测试
reboot
6.使用ps命令查看jar启动状态:
#查看包含.jar后缀的文件启动状态
ps -ef | grep .jar
7.结束pid进程:
kill -9 pid
#或者
kill pid
#或者结束整个java进程
killall java
8.取消自动启动脚本
将/etc/rc.d/init.d/jar_auto.sh注释掉即可
vim /etc/rc.d/rc.local
另外一种后台运行的方式,并将相关日志输出到spring.log
nohup java -jar abc.jar >spring.log &
nohup java -jar abc.jar >spring.log 2>&1 &
nohup java -jar -Xms512M -Xmx1024M -XX:PermSize=512M -XX:MaxPermSize=1024M /home/ruoyi/projects/ruoyi/ruoyi-admin.jar > /home/ruoyi/projects/ruoyi/ry-vue.log 2>&1 &
注释:
nohup : 是 no hang up 的缩写,就是不挂断的意思。
& : 指在后台运行。
nohup COMMAND & : 这样就能使命令永久的在后台执行。
&>或2>&1 :将标准输出与错误输出共同写入到文件中
2>&1 : 是将标准错误(2)重定向到标准输出(&1),标准输出(1)再被重定向输入到 stdout.log 文件中。