Java启动脚本实例与解析

本文介绍了一种用于后台启动Java服务的启动脚本,并详细解释了脚本中各项配置的作用,包括如何确保服务异常时能够自动重启及如何收集关键的日志信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 为什么要用启动脚本

  • 可以快速以后台运行模式启动服务
  • 结合crontab做一层保障:即使服务异常崩溃也能快速重启,当然我们一定要保存崩溃现场记录,比如OOM导致系统崩溃时的OOM日志。

2. 启动脚本样例cacheStart.sh

#source /etc/profile
export LANG=zh_CN.UTF-8
nohup /usr/local/jdk18/bin/java -jar -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=./oom/ -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+PrintGCCause -Xloggc:./logs/gc/cache-gc-%t.log -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=20M -Xms5120m -Xmx5120m ./cache-0.0.1-SNAPSHOT.jar >/dev/null 2>&1 &

3. 脚本命令解析

3.1. nohup命令

用途:不挂断地运行命令。

语法:nohup Command [ Arg … ] [ & ]

描述:nohup 命令运行由 Command 参数和任何相关的 Arg 参数指定的命令,忽略所有挂断(SIGHUP)信号。在注销后使用 nohup 命令运行后台中的程序。要运行后台中的 nohup 命令,添加 & ( &前面有一个空格)到命令的尾部。

3.2. >/dev/null 2>&1

默认情况是1,也就是等同于1>/dev/null 2>&1。意思就是把标准输出重定向到“黑洞”,还把错误输出2重定向到标准输出1,即标准输出和错误输出都进了“黑洞”。

1)文件描述符

Linux系统预留可三个文件描述符:0、1和2,他们的意义如下所示:
0——标准输入(stdin)
1——标准输出(stdout)
2——标准错误(stderr)

标准输出——stdout
假设:在当前目录下,有且只有一个文件名称为ljl.txt的文件,这时我们运行这个命令【ls jmeter.log】,就会获得一个标准输出stdout的输出结果:jmeter.log
在这里插入图片描述

错误输出——stderr
按照上面的假设,我们运行另一条命令【ls hello.txt】,这样我们就会获得一个标准错误stderr的输出结果“ls:hello.txt:没有那个文件或目录”。
在这里插入图片描述

2)重定向

重定向的符号有两个:>或>>。
两者的区别是:前者会先清空文件,然后再写入内容,后者会将重定向的内容追加到现有文件的尾部。

(1)重定向标准输出stdout
在这里插入图片描述

如上图所示,对比没有添加重定向的操作,这条命令在使用之后并没有将jmeter.log打印到屏幕。
在紧接的cat操作后,可以发现本来应该被输出的内容被记录到stdout.txt中。

(2)、重定向标准错误stderr
在这里插入图片描述
如上图所示,文件描述符2,标准错误的重定向也是同样的原理被记录在了文件stderr.txt这个文件里面了。

(3)可以将stderr单独定向到一个文件,stdout重定向到另一个文件

cmd 2> stderr.txt 1>stdout.txt

(4)可以将stderr和stdout重定向到同一个文件

cmd > output.txt 2>&1

或采用下面的方法,可以少写几个字,能达到同样的效果

cmd &> output.txt
# 两者的效果是一样的
cmd >& output.txt
3)特殊文件(/dev/null)

/dev/null是一个特殊的设备文件,这个文件接收到任何数据都会被丢弃。因此,null这个设备通常也被称为位桶(bit bucket)或黑洞。
所以 >/dev/null 2>&1的意思是将标准输出和标准错误删掉。

3.3 GC配置解析

  • XX:+HeapDumpOnOutOfMemoryError
    OOM时dump堆文件
  • -XX:HeapDumpPath=./oom/
    OOM是dump堆文件的位置
  • -XX:+PrintGCDateStamps
    GC日志打印日期时间戳
  • -XX:+PrintGCDetails
    GC日志打印GC明细
  • -XX:+PrintGCCause
    GC日志打印GC原因
  • -Xloggc:./logs/gc/pie-cache-gc-%t.log
    GC日志文件命名规则,%t表示时间
  • -XX:+UseGCLogFileRotation
    滚动记录GC日志
  • -XX:NumberOfGCLogFiles=5
    一共记录5个GC日志文件
  • -XX:GCLogFileSize=20M
    每个GC文件最大容量是20M
  • -Xms5120m
    堆最小内存
  • -Xmx5120m
    堆最大内存
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秃秃爱健身

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值