一个简单的SHELL脚本模板,适用于Java项目的启动,停止,重启。

如果在windows上编辑,请使用Notepad++ 设置编码格式为UTF-8无BOM编码,脚本的文档格式为UNIX格式,否则会因为一些看不到的字符导致脚本无法使用。

#!/bin/bash# Comments to support chkconfig on Linux
# chkconfig: 2345 64 36# Author : deng.gonghai
# Date   : 2016-08-29# ======================================
# Script for the xxx Server
# ======================================# 服务名,该参数配合 ps -ef 命令用来查找服务信息.
# 设置此值的目的是查找服务进程ID时方便.一般来说此值具有一定的标识意义.
SERVER_NAME="MyTest"# JDK安装目录,使用默认的JDK,推荐修改为JDK路径.
JAVA_HOME=$JAVA_HOME# 使用的库文件目录,所有的外部jar包请放到这个目录下.
INFLIB=""# 一般情况下该值为项目二进制文件的根目录.如果项目打成了jar包,则该值指定为jar包即可.
CLASS_PATH=test1.jar# 虚拟机参数,设置虚拟机内存等一些配置.
#VM_ARGUMENTS="-Xms128m -Xmx256m -XX:MaxPermSize=64m \
#              -Djava.awt.headless=true \
#              -XX:+HeapDumpOnOutOfMemoryError \
#              -XX:+HeapDumpOnCtrlBreak \
#              -XX:HeapDumpPath=/app/logs\
#              -Xverbosegc:file=/app/logs/gc.log \
#              -Dfile.encoding=GBK \
#              -Duser.language=zh \
#              -Duser.region=CN \
#              -Dlog4j.configuration=file:./classes/log4j_cfg/log4j_MGR.properties "# 服务启动的主类.
MainClass=com.ztesoft.mputils.StartTest# main方法的参数在这里设置.参数与参数之间请用空格隔开.
# 字符串中间有空格,所以需要使用双引号.
PROGRAM_ARGUMENTS="args1 args2 args3"# 自定义控制台输出路径,默认情况下为nohup.out
CONSOLE_LOG="nohup.out"# 启动服务(判断服务是否启动,只有没有启动的情况下,才启动.)
function start(){# 正在运行的服务数量runNum=`ps -ef|tr -s ' '|sort -n |grep $SERVER_NAME |grep -v "grep" | awk '{print $2}' |wc -l`# 当前运行的服务数为 0 ,启动服务.if [ $runNum -eq 0 ] ; then# 启动命令command="$JAVA_HOME/bin/java -D$SERVER_NAME \-cp $CLASS_PATH -Djava.ext.dirs=$INFLIB \$VM_ARGUMENTS $MainClass $PROGRAM_ARGUMENTS"# 将服务挂到后台启动,并将控制台日志重定向到 CONSOLE_LOG.nohup $command > $CONSOLE_LOG 2>&1 &# 打开控制台日志.if [ $? -eq 0 ] ; thenecho "服务 $SERVER_NAME 启动成功!! 服务进程PID=$! . 正在打开控制台日志..."tail -f $CONSOLE_LOGelseecho "服务启动失败,1秒钟后将打开控制台日志."sleep 1tail -f $CONSOLE_LOGfi# 当前可能存在正在运行的服务,或者脚本判断服务数量有错误.elseecho "服务已经启动,启动服务个数为 ${runNum} 个, 请先停止服务 $SERVER_NAME."fi}# 停止服务
function stop(){# 正在运行的服务数量runNum=`ps -ef|tr -s ' '|sort -n |grep $SERVER_NAME |grep -v "grep" | awk '{print $2}' |wc -l`# 如果正在运行的服务数量为1, 则停止服务if [ $runNum -eq 1 ] ; thenPID=`ps -ef|tr -s ' '|sort -n |grep $SERVER_NAME |grep -v "grep" | awk '{print $2}'`if [ $PID -gt 1 ] ; thenecho "服务 $SERVER_NAME 的PID为 $PID. 2秒钟之后将停止该服务."sleep 2kill $PIDsleep 3if [ $? -eq 0 ] ; thenecho "停止服务 $SERVER_NAME 成功!!"return 0elseecho "停止服务发生异常,请手工停止并检查原因."fielseecho "获取PID失败,获取PID为 $PID .请手工停止服务 $SERVER_NAME ."fi# 停止服务数量不对,需要人工干预elseif [ $runNum -eq 0 ] ; thenecho "当前正在运行服务数量 $runNum 个.无正在运行的服务."return 0elseecho "当前正在运行服务数量 $runNum 个,请手动选择停止!!"fifireturn 1
}
# 重启
function restart(){stopif [ $? -eq 0 ] ; thenecho "正在启动服务..."sleep 5startelseecho "停止服务失败,请检查原因!!"fi
}
# 其他情况
function others(){echo " Usage: start|stop|restart "
}case "$1" instart)start;;stop)stop;;restart)restart;;*)others;;
esac

一个简单的SHELL脚本模板相关推荐

  1. 一个简单的shell脚本--判断网段主机IP存活情况

    在日常工作中,我们运维人员有时也需要配合网络工程师进行测试网络IP的使用情况,此脚本用于测试使用. 编辑脚本: vi ipmom.sh #!/bin/bash # #by skyfans #seq命令 ...

  2. linux系统写一个脚本,编写一个简单的linuxshell脚本

    shell脚本和windows平台上的bat批处理是一样的,简化用户处理重复动作的操作,shell脚本由shell命令组成.下面是学习啦小编收集整理的编写一个简单的linuxshell脚本,希望对大家 ...

  3. 一个简单的shell文件备份脚本

    为什么80%的码农都做不了架构师?>>>    这篇文章主要是说一下文件备份的脚本的编写心得 这一次工作中,因为管理员的操作失误导致系统文件受损,但是当时服务器上也没有进行一些备份的 ...

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

    一个不错的shell 脚本教程 入门级 投稿:mdxy-dxy 字体:[增加 减小] 类型:转载 时间:2011-10-11 我要评论 一个很不错的bash脚本编写教程,至少没接触过BASH的也能看懂 ...

  5. 在linux中编写shell脚本文件,如何编写简单的Shell脚本(Script)文件之Linux的基本操作...

    如何编写简单的Shell脚本(Script)文件之Linux的基本操作 新建一个文本文件包含所需要的脚本.举例,我会使用pico编辑器写一个脚本用来运行程序tar,带上必要的可选项可以用来解压从因特网 ...

  6. 编写一个最简单的.php,学习猿地- 说明 如果我们要编写一个简单的PHP脚本,需要学习哪些...

    说明 如果我们要编写一个简单的 PHP 脚本,需要学习哪些基础知识呢? PHP 基础 PHP 脚本可放置于文档中的任何位置. 标准 的 PHP 脚本以 <?php 开头,以 ?> 结尾: ...

  7. 几个简单的shell脚本

    这里的几个脚本分别是用for.while.until循环写的从1加到100,判断当前目录下的文件是否为普通文件,如果是则移动到家目录,还有一个是在网上看到的面试题目. 从1加到100的三种实现方法: ...

  8. 编写一个弹出式菜单的shell程序_分享一个有趣的shell脚本--实现抓阄程序

    概述 今天主要分享一个有趣的shell脚本,用来实现抓阄,平时就不用剪刀石头布了. 需求 使用shell编写一个抓阄的程序: 1.执行脚本后,输入英文名字全拼,产生随机数01-99之间的数字,数字越大 ...

  9. 07 linux 一个完整的shell脚本调试工具

    一个完整的shell脚本调试工具 常用的日志输出形式 使用OOP编程思想设计log函数 让log方法象log4j一样 输出时前面带日期和时间 为日志输出添加开关 划分日志等级 并添加颜色 输出到文件 ...

最新文章

  1. 新人工智能算法速度无极限
  2. 史上最详细阿里云服务器上Docker部署War包项目 实战每一步都带详细图解!!!
  3. python递归实现_Python-递归实现
  4. springcloud服务网关Netflix Zuul入门简介
  5. linux环境下内存溢出分析MAT
  6. log4j控制日志输出文件名称的两种方式
  7. Loadrunner之-VirtualUserGenerator录制web程序脚本
  8. SVN工作副本已经锁定错误的解决方法
  9. 人型自走输入法(网页日语输入法)
  10. DPDK-实战之load_balancer(负载均衡)
  11. html弄出油画效果,使用HTML5 Canvas实现仿PS图像油画滤镜特效
  12. php获取电脑硬件配置,如何查看电脑硬件配置
  13. 【结构体】结构变量的定义与初始化
  14. 177本名著浓缩成了177句话!
  15. 免屏实现精准较时设定,WT588F02B-8S(C006_03)电子语音药盒解决方案
  16. MySQL连接不了本地服务器原因
  17. swift实现饭否应用客户端源码
  18. 知乎万人点赞推荐的五款APP
  19. vagrant简单学习使用
  20. Qt自定义/绘制旋钮控件

热门文章

  1. 怎样通过微信查找特殊服务器,微信支持多设备同时在线 还有哪些你不知道的微信隐藏功能...
  2. 关于烟草的知识(我不吸烟)
  3. 1164: 字符串加密
  4. 工具推荐|使用Edge浏览器来调试js代码
  5. Notepad++设置删除多行快捷键
  6. 京东数据分析:2022年8月奶粉各品牌销售数据及榜单
  7. 网页设计与制作的学习(二)
  8. 怎么把自己的Android library上传到jCenter和Maven Central
  9. python字符串编码
  10. 南阳《建筑业企业施工劳务资质备案申请表》填写说明