来源:https://blog.csdn.net/com15169113041/article/details/78191849

#!/bin/sh

#

#该脚本为Linux下启动java程序的通用脚本。即可以作为开机自启动service脚本被调用,

#也可以作为启动java程序的独立脚本来使用。

#

#Author: tudaxia.com, Date: 2011/6/7

#

#警告!!!:该脚本stop部分使用系统kill命令来强制终止指定的java程序进程。

#在杀死进程前,未作任何条件检查。在某些情况下,如程序正在进行文件或数据库写操作,

#可能会造成数据丢失或数据不完整。如果必须要考虑到这类情况,则需要改写此脚本,

#增加在执行kill命令前的一系列检查。

#

###################################

# 以下这些注释设置可以被chkconfig命令读取

# chkconfig: - 99 50

# description: Java程序启动脚本

# processname: test

# config: 如果需要的话,可以配置

###################################

#

###################################

#环境变量及程序执行参数

#需要根据实际环境以及Java程序名称来修改这些参数

###################################

#JDK所在路径

JAVA_HOME="/usr/java/jdk1.8.0_102"

#执行程序启动所使用的系统用户,考虑到安全,推荐不使用root帐号

#RUNNING_USER=portal

#Java程序所在的目录(classes的上一级目录)

APP_HOME=/opt/tmp/geecuser/geec_calculate

#需要启动的Java主程序(main方法类)

APP_MAINCLASS=com.ai.core.start.Main

#拼凑完整的classpath参数,包括指定lib目录下所有的jar

CLASSPATH=$APP_HOME/classes

for i in "$APP_HOME"/lib/*.jar; do

CLASSPATH="$CLASSPATH":"$i"

done

#java虚拟机启动参数

JAVA_OPTS="-ms1024m -mx1024m -Xmn512m -Djava.awt.headless=true -XX:MaxPermSize=256m"

###################################

#(函数)判断程序是否已启动

#

#说明:

#使用JDK自带的JPS命令及grep命令组合,准确查找pid

#jps 加 l 参数,表示显示java的完整包路径

#使用awk,分割出pid ($1部分),及Java程序名称($2部分)

###################################

#初始化psid变量(全局)

psid=0

checkpid() {

javaps=`$JAVA_HOME/bin/jps -l | grep $APP_MAINCLASS`

if [ -n "$javaps" ]; then

psid=`echo $javaps | awk '{print $1}'`

else

psid=0

fi

}

###################################

#(函数)启动程序

#

#说明:

#1. 首先调用checkpid函数,刷新$psid全局变量

#2. 如果程序已经启动($psid不等于0),则提示程序已启动

#3. 如果程序没有被启动,则执行启动命令行

#4. 启动命令执行后,再次调用checkpid函数

#5. 如果步骤4的结果能够确认程序的pid,则打印[OK],否则打印[Failed]

#注意:echo -n 表示打印字符后,不换行

#注意: "nohup 某命令 >/dev/null 2>&1 &" 的用法

###################################

start() {

checkpid

if [ $psid -ne 0 ]; then

echo "================================"

echo "warn: $APP_MAINCLASS already started! (pid=$psid)"

echo "================================"

else

echo -n "Starting $APP_MAINCLASS ..."

JAVA_CMD="nohup $JAVA_HOME/bin/java $JAVA_OPTS -classpath $CLASSPATH $APP_MAINCLASS >$APP_HOME/log/nohup 2>&1 &"

eval $JAVA_CMD

checkpid

if [ $psid -ne 0 ]; then

echo "(pid=$psid) [OK]"

else

echo "[Failed]"

fi

fi

}

###################################

#(函数)停止程序

#

#说明:

#1. 首先调用checkpid函数,刷新$psid全局变量

#2. 如果程序已经启动($psid不等于0),则开始执行停止,否则,提示程序未运行

#3. 使用kill -9 pid命令进行强制杀死进程

#4. 执行kill命令行紧接其后,马上查看上一句命令的返回值: $?

#5. 如果步骤4的结果$?等于0,则打印[OK],否则打印[Failed]

#6. 为了防止java程序被启动多次,这里增加反复检查进程,反复杀死的处理(递归调用stop)。

#注意:echo -n 表示打印字符后,不换行

#注意: 在shell编程中,"$?" 表示上一句命令或者一个函数的返回值

###################################

stop() {

checkpid

if [ $psid -ne 0 ]; then

echo -n "Stopping $APP_MAINCLASS ...(pid=$psid) "

kill -9 $psid

if [ $? -eq 0 ]; then

echo "[OK]"

else

echo "[Failed]"

fi

checkpid

if [ $psid -ne 0 ]; then

stop

fi

else

echo "================================"

echo "warn: $APP_MAINCLASS is not running"

echo "================================"

fi

}

###################################

#(函数)检查程序运行状态

#

#说明:

#1. 首先调用checkpid函数,刷新$psid全局变量

#2. 如果程序已经启动($psid不等于0),则提示正在运行并表示出pid

#3. 否则,提示程序未运行

###################################

status() {

checkpid

if [ $psid -ne 0 ]; then

echo "$APP_MAINCLASS is running! (pid=$psid)"

else

echo "$APP_MAINCLASS is not running"

fi

}

###################################

#(函数)打印系统环境参数

###################################

info() {

echo "System Information:"

echo "****************************"

echo `head -n 1 /etc/issue`

echo `uname -a`

echo

echo "JAVA_HOME=$JAVA_HOME"

echo `$JAVA_HOME/bin/java -version`

echo

echo "APP_HOME=$APP_HOME"

echo "APP_MAINCLASS=$APP_MAINCLASS"

echo "****************************"

}

###################################

#读取脚本的第一个参数($1),进行判断

#参数取值范围:{start|stop|restart|status|info}

#如参数不在指定范围之内,则打印帮助信息

###################################

case "$1" in

'start')

start

;;

'stop')

stop

;;

'restart')

stop

start

;;

'status')

status

;;

'info')

info

;;

*)

echo "Usage: $0 {start|stop|restart|status|info}"

exit 1

esac

exit 0

.

linux shell脚本 main,Linux shell启动Java Main函数脚本相关推荐

  1. shell 启动java程序_Shell 脚本启动java程序

    最近,做好了一段儿程序,但是在ubuntu系统下需要用命令行输入命令启动.于是研究了一下Shell脚本启动的方法. 刚开始接触Shell脚本,一头雾水.不过最终还是实现了,和大家分享一下: 不过需要注 ...

  2. linux下java调用python脚本,java - 在Linux Terminal中以编程方式从Java调用python脚本 - 堆栈内存溢出...

    我正在开发一个Java应用程序,用于检查源文件中的补丁程序(是否存在). 用于检测补丁程序更改的核心逻辑位于python脚本[titled'patch.py​​']中,并且我的Java应用程序与此Py ...

  3. linux 脚本 java_linux系统下运行java项目的脚本编写

    本文主要讲linux系统下运行jar包,至于如何打包jar包,放到linux系统下可以参考其他的博客. 在linux系统下运行jar包的命令如下: 1.java -jar xxxxx.jar  //  ...

  4. bat java 启动脚本_bat批处理启动java程序通用脚本

    前提: 脚本假设需要给脚本传递两个参数,参数最终传给java程序 脚本同级目录中classes内存放的是程序运行的classes文件 脚本同级目录中lib内存放的是程序运行的jar包 非最佳脚本,根据 ...

  5. linux启动java jar文件_推荐:Linux启动Java程序jar包Shell脚本

    #!/bin/sh# 该脚本为Linux下启动java程序的脚本## author: luandy# date: 2021/1/15## 特别注意:# 该脚本使用系统kill命令来强制终止指定的jav ...

  6. java -jar 停止_推荐:Linux启动Java程序jar包Shell脚本

    每次启动Java程序jar包的时候,难道你还在手敲java -jar xxserver.jar--?边敲边想着都需要追加哪些参数? 今天就推荐给大家一个几乎通用的Shell脚本,它支持Java程序Ja ...

  7. linux svn 服务 关闭,Linux下启动、关闭SVN服务

    Linux下启动/关闭Oracle 一.Linux下启动Oracle Linux下启动Oracle分为两步: 1)启动监听: 2)启动数据库实例: 1.登录服务器,切换到oracle用户,或者以ora ...

  8. 使用java运行Python脚本并获取返回值

    java运行Python脚本并获取返回值 java运行Python脚本并获取返回值 使用runtime类实现在java中运行Python脚本,话不多说,直接上代码 java运行Python脚本并获取返 ...

  9. java 虚函数_Java的虚方法

    虚方法出现在Java的多态特性中, 父类与子类之间的多态性,对父类的函数进行重新定义.如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding).在Java中,子类 ...

  10. oracle启动shell脚本编写,Linux下的Oracle启动脚本及其开机自启动

    说明:以下操作环境在CentOS 6.4 + Oracle 11gR2(Oracle安装在ORACLE_BASE=/opt/oracle中,其ORACLE_HOME=/opt/oracle/11g) ...

最新文章

  1. 如何从 Ubuntu 中彻底卸载 Google Chrome
  2. json.parse()和json.stringify()
  3. java反射原理三种,Java反射的原理,作用
  4. 【客户案例】智能驾驶行业如何上云?
  5. 来个硬货——长文解读:基于业务场景的MySQL千万级大表优化
  6. 链表之单链表约瑟夫问题(一)
  7. 关于C++中的unordered_map和unordered_set不能直接以pair作为键名的问题
  8. Windows2003屏蔽IP
  9. WCF中的REST是什么
  10. 公路护栏设计技术简析
  11. 微信Log日志分析——初步探索
  12. 【方案分享】2022虎年新春潮玩嘉年华活动策划方案:我们超虎的.pptx(附下载链接)...
  13. 【寒江雪】Go实现Builder Pattern
  14. Only variable references should be returned by reference
  15. windows 商店的Ubuntu18.04安装教程
  16. 计算机相关专业提升学历的解决方案(博士研究生)
  17. c语言sqlite3写数据类型,在sqlite数据库中,int类型不等于integer数据类型
  18. openwrt 显示系统运行时间和空闲时间
  19. openldap简介
  20. 全球城市ZoneId和UTC时间偏移量的最全对照表

热门文章

  1. 在一个成熟行业里怎么生存下去?
  2. CTF---Web入门第二题 上传绕过
  3. 技术管理者工作成效评估表
  4. Windows Server 2008 R2 远程桌面服务RDS和VDI介绍
  5. shell unexpected operator
  6. Silverlight实用窍门系列:43.Silverlight从ListBox拖拽图标到另一ListBox
  7. memcpy( )函数复制二维数组 memcmp( )函数比较二维数组
  8. java环境问题_1_JAVA语言的特点及配置环境问题
  9. javaSE基础之字符串
  10. linux下修改mysql数据存储_Linux下修改MySQL数据存放目录方法及可能遇到的问题--转...