使用Shell脚本如何启动/停止Java的jar程序

 更新时间:2020年12月11日 10:34:41   作者:AuroraDuring  
这篇文章主要介绍了使用Shell脚本如何启动/停止Java的jar程序,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

本文介绍如何使用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程序内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python创建、删除桌面、启动组快捷方式的例子分享

    Python创建、删除桌面、启动组快捷方式的例子分享

    这篇文章主要介绍了Python创建、删除桌面、启动组快捷方式的例子分享,需要的朋友可以参考下
    2014-04-04
  • Linux启动新进程的三种方法

    Linux启动新进程的三种方法

    本篇文章主要介绍了Linux启动新进程的三种方法以及这三种方法之间的区别。具有很好的参考价值。下面跟着小编一起来看下吧
    2017-04-04
  • 深入理解Shell输出颜色与控制

    深入理解Shell输出颜色与控制

    在Linux shell或者平时echo输出时有时为了区分某些字符串的重要性,往往对其输出内容添加颜色以醒目区分。下面这篇文章就主要介绍了关于Shell输出颜色与控制,有需要的朋友们可以参考借鉴,下面来一起看看吧。
    2016-12-12
  • Shell脚本实现获取网页快照并生成缩略图

    Shell脚本实现获取网页快照并生成缩略图

    这篇文章主要介绍了Shell脚本实现获取网页快照并生成缩略图,本文获取网页快照使用phantomjs、生成缩略图使用ImageMagick,需要的朋友可以参考下
    2015-02-02
  • npm script命令同时进行多个监听服务的方法

    npm script命令同时进行多个监听服务的方法

    这篇文章主要介绍了npm script命令同时进行多个监听服务的方法,非常不错,具有一定的参考借鉴价值,需要的朋友参考下吧
    2018-08-08
  • shell脚本输出多个主机的网卡速率的方法

    shell脚本输出多个主机的网卡速率的方法

    这篇文章主要介绍了shell脚本输出多个主机的网卡速率的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • csh,tcsh,bash,sh等shell的区别

    csh,tcsh,bash,sh等shell的区别

    这篇文章主要介绍了linux下csh, tcsh,bash, sh等shell的区别?,需要的朋友可以参考下
    2014-02-02
  • shell脚本命令行参数简介

    shell脚本命令行参数简介

    本文详细介绍了shell脚本命令行参数的用法,在shell脚本中要注意命令行参数怎么使用,这也是shell编程中的重点内容,有需要的朋友参考下。
    2014-04-04
  • 控制输出颜色的shell脚本

    控制输出颜色的shell脚本

    今天这个案例很酷,是用来控制输出的颜色的,需要的朋友可以参考下
    2016-08-08
  • 详解Linux中的awk命令

    详解Linux中的awk命令

    awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。这篇文章主要介绍了Linux中的awk命令的相关知识,需要的朋友可以参考下
    2019-11-11

最新评论