本文介绍如何使用Shell脚本来开启和停止jar程序的后台运行,以及如何实现out大文件的切分。另外,补充一些后台运行的小知识。

启动脚本:start_upload.sh

#!/bin/sh

nohup java -jar UploadSchedule.jar >> /usr/local/tomcat9/webapps/upload-to-oss/nohup_upload.out 2>&1 &

echo $! > /var/run/UploadSchedule.pid

启动脚本说明:

1、开启后台执行,并将程序产生的日志文件写入out文件;

2、将当前进程id写入/var/run/UploadSchedule.pid,以供在停止脚本中使用此pid来停止当前进程。

停止脚本:stop_upload.sh

#!/bin/sh

PID=$(cat /var/run/UploadSchedule.pid)

kill -9 $PID

停止脚本说明:

1、首先获取进程id;

2、然后杀掉该进程。

文件切分:split_nohup.sh

程序不中断,一直在后台运行,那么产生的log也会持续输出到out问价,导致out文件越来越大。当需要根据out文件进行一些日志查找的时候,非常不方便。所以定期对out文件进行切分,按日期将当日out文件切分成若干小文件,从而方便处理及错误查找定位。

#!/bin/bash

log_path=/usr/local/tomcat9/webapps/upload-to-oss

if [ -f "$log_path/nohup_upload.out" ];then

current_date=`date -d "-1 day" "+%Y%m%d"`

cp $log_path/nohup_upload.out $log_path/nohup_upload_${current_date}.out

cat /dev/null > $log_path/nohup_upload.out

split -b 5242880 -d -a 4 $log_path/nohup_upload_${current_date}.out $log_path/nohup_upload_${current_date}_

rm -rf $log_path/nohup_upload_${current_date}.out

fi

切分脚本说明:

1、如果out文件存在,将nohup_upload.out文件复制一份,命名为nohup_upload_当前日期(比如nohup_upload_20200328.out);

2、将nohup_upload.out文件清空;

3、对nohup_upload_20200328.out文件进行切分,切分后的文件命名格式为nohup_upload_20200328_0001,nohup_upload_20200328_0002;

-b 指定每个小文件的大小(单位byte)

-d 以数字作为后缀

-a 指定后缀的长度

4、将原文件(nohup_upload_20200328.out)删除。

执行开启/停止命令

# 启动

./start_upload.sh

# 停止

./stop_upload.sh

一些后台运行的小知识

&和nohup区别:

&的意思是在后台运行。意思是说, 当你在执行 ./start_upload.sh & 的时候, 即使你用Ctrl + C, 那么start_upload.sh照样运行(因为对SIGINT信号免疫)。 但是要注意, 如果你直接关掉Shell后, 那么, start_upload.sh进程同样消失。 因为对SIGHUP信号不免疫。

nohup的意思是忽略SIGHUP信号, 所以当运行nohup ./start_upload.sh的时候, 关闭Shell,start_upload.sh进程还是存在的(对SIGHUP信号免疫)。 但是如果你直接在Shell中用Ctrl + C, 那么,start_upload.sh进程也是会消失的(因为对SIGINT信号不免疫)

所以,要让进程真正不受Shell中Ctrl + C和Shell关闭的影响, 就用nohup和&同时用。

到此这篇关于使用Shell脚本如何启动/停止Java的jar程序的文章就介绍到这了,更多相关Shell 启动停止jar程序内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:监控MySQL主从状态的shell脚本

shell脚本使用两个横杠接收外部参数的方法

Shell中使用grep、sed正则提取和替换字符串

Shell eval通过变量获取环境变量的方法实现

shell脚本实战-while循环语句

shell脚本--sed的用法详解

linux shell中 if else以及大于、小于、等于逻辑表达式介绍

Linux中执行shell脚本的4种方法总结

一个不错的shell 脚本教程 入门级

Shell字符串比较相等、不相等方法小结

python中执行shell命令的几个方法小结

分享一个可以通过命令简写执行对应命令的Shell脚本

java源码如何启动脚本_使用Shell脚本如何启动/停止Java的jar程序相关推荐

  1. CentOS7 源码编译安装MySQL8.0.15 shell脚本

    使用MySQL8无需像MySQL5那样需要Boost依赖,和经过35-55分钟的等待编译完成,直接解压即可使用,方便快捷! 1,环境: 操作系统   CentOS Linux release 7.6. ...

  2. 面试官系统精讲Java源码及大厂真题 - 13 差异对比:集合在 Java 7 和 8 有何不同和改进

    13 差异对比:集合在 Java 7 和 8 有何不同和改进 更新时间:2019-09-19 09:39:16 时间像海绵里的水,只要你愿意挤,总还是有的. --鲁迅 引导语 Java 8 在 Jav ...

  3. CentOS7 源码编译安装NodeJS 最新版本Shell脚本

    1,环境: 操作系统   CentOS Linux release 7.6.1810 (Core) 服务器环境   "腾讯云"服务器 cat /etc/centos-release ...

  4. 手机反编译java源码,再现反编译神器ShowJava,支持反编译出java源码

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 ** DO NOT USE THIS APPLICATION TO DO STUFF THAT YOU HAVE NO RIGHT TO DO. THE ...

  5. python代替shell脚本_自动化shell脚本except与python的pexpect模块

    expect脚本 expect是什么 expect是一个免费的编程工具,用来实现自动的交互式任务,而无需人为干预.说白了,expect就是一套用来实现自动交互功能的软件. 在实际工作中,我们运行命令. ...

  6. Java源码详解六:ConcurrentHashMap源码分析--openjdk java 11源码

    文章目录 注释 类的继承与实现 数据的存储 构造函数 哈希 put get 扩容 本系列是Java详解,专栏地址:Java源码分析 ConcurrentHashMap 官方文档:ConcurrentH ...

  7. Java源码详解四:String源码分析--openjdk java 11源码

    文章目录 注释 类的继承 数据的存储 构造函数 charAt函数 equals函数 hashCode函数 indexOf函数 intern函数 本系列是Java详解,专栏地址:Java源码分析 Str ...

  8. Java源码详解五:ArrayList源码分析--openjdk java 11源码

    文章目录 注释 类的继承与实现 构造函数 add操作 扩容函数 remove函数 subList函数 总结 本系列是Java详解,专栏地址:Java源码分析 ArrayList 官方文档:ArrayL ...

  9. Java源码详解三:Hashtable源码分析--openjdk java 11源码

    文章目录 注释 哈希算法与映射 线程安全的实现方法 put 操作 get操作 本系列是Java详解,专栏地址:Java源码分析 Hashtable官方文档:Hashtable (Java Platfo ...

最新文章

  1. MongoDB之副本集
  2. OpenShift — Overview
  3. go语言socket通信初试
  4. laravel CURD 查询构造器
  5. 啊哈算法中的Dijkstra最短路算法(好理解!!!)
  6. qt on android 桌面鼠标事件,關於Qt on Android,程序安裝到手機,界面只占到一小部分。...
  7. 【MySQL】日期函数:日期、时间增减
  8. 《R语言数据分析》——3.2 聚集
  9. 51nod 1575 Gcd and Lcm
  10. Android-语言设置流程分析
  11. python numpy Quickstart tutorial之set_printoptions
  12. java 内存泄漏问题_JAVA内存泄漏问题处理方法经验总结
  13. 买房就是创业,房东就是创业者
  14. [转]FactoryBean用法
  15. linux系统安装佳能打印机驱动,fedora21怎么安装佳能打印机驱动?
  16. DiskLruCache 源码分析
  17. Stata:数据包络分析(DEA)
  18. Centos添加开机启动项【Systemctl方式】
  19. Spectral Algorithm
  20. linux去除内容重复行,Linux删除文本中的重复行 - 米扑博客

热门文章

  1. 读书笔记—《销售铁军》随记4
  2. 10 条真心有趣的 Linux 命令
  3. 4-30 HTML 细节摘录
  4. 剑指Offer-- 二维数组中的查找
  5. 在Web中实现C/S模式的Tab
  6. 设计模式之Strategy(策略模式系列1)
  7. 讨论用户注册有的几篇好文
  8. new失败跟踪函数_关于针对class自定义new操作符失败的函数处理
  9. SpringBoot项目 整合 JacksonXml
  10. 前端基础:学习 ES6 新特性