Linux 自启动加载自定义sh脚本文件,以运行jar项目包为例

1.前提介绍 nohup 命令

该命令的一般形式为:nohup command &

nohup :表示永久运行

& : 表示后台运行

  我们在开发中常需要启动长时间运行的程序,需要在关闭ssh连接时,仍然保持程序正常运行,为此我们需要用到nohup命令,当然也可以用screen。比如自己开发好的web项目打包成jar包放到服务器上需要开机自启动的场景。

在缺省情况下该作业的所有输出都被重定向到一个名为nohup.out的文件中,除非另外指定了输出文件:

nohup command > myout.file 2>&1 &

在上面的例子中,输出被重定向到myout.file文件中。

2>&1,表示2的输出重定向等同于1

即标准输出到mqnamesrv.out中,接着,标准错误输出重定向等同于标准输出,输出到同一文件中。

  1.1 nohup 和 screen 简单对比

  1. nohup命令只保证单个指定进程不退出,screen命令会保留整个会话期内的所有进程;

  2. nohup命令相对简单,对于复杂的人机交互还是需要screen命令;

  3. nohup命令执行的程序只能通过kill命令来杀死,而screen命令可以更友好些;

  4. screen命令可以保留会话的环境设置,通过恢复会话,可以实现工作环境的快速切换;

  5. 相对而言nohup占用资源更少,没有交互需求的时候,nohup就能满足需要了;

     screen是可以完全替代nohup的,会更方便且强大些。

2.以在linux中开机自启动jar包为例子

2.1 准备测试jar包

2.2 编写start.sh 启动脚本,以nohup的启动方式运行java -jar 命令,并输出启动日志文件 nothup.out 至当前目录下

#!/bin/sh
nohup java -jar test.jar -Xms64m -Xmx128m -XX:PermSize=64m -XX:MaxPermSize=128m > nothup.out 2>&1 &

 

目录示例

2.3 运行jar文件需要java的环境

下载jdk,可以下载tar.gz的jdk包,放入/opt目录下并解压即可

Linux 自启动加载自定义sh脚本文件,以运行jar项目包为例_第1张图片

2.4 jdk解压成功后需要配置JAVA_HOME的环境变量

在/etc/profile文件中最后添加以下两行

export JAVA_HOME="/opt/jdk1.8.0_191/bin"

export PATH="$JAVA_HOME:$PATH"

2.5 使配置生效

编辑好文件后需要wq保存退出后执行 source /etc/profile 刷新文件

2.6 linux开机自启动的执行文件为 /etc/rc.d/rc.local ,可以编辑该文件以执行自己所需要系统自启动时执行的一些东西,如下


#!/bin/sh
#

# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.

#开机自启动nohup有个问题,有的会报command 'java' 找不到,需要以下更新下/etc/profile
source /etc/profile
#假设test.jar 在/home/test/目录下,启动脚本也在此目录下
cd /home/test/
sh start.sh

2.6.1 插曲介绍下sh start.sh 和 ./start.sh 的区别

sh xxx.sh是用sh 执行start.sh,start.sh可以没有执行标志,可以不用加./,可以不用在脚本第一行写上#!/bin/sh
./start.sh是调用脚本第一行制定的shell去解释执行,缺省为sh,就是bash

2.7 可以执行 reboot 重启linux验证 nothup.out 是否成功有启动日志。

Linux 自启动加载自定义sh脚本文件,以运行jar项目包为例_第2张图片

你可能感兴趣的:(linux)