java的linux执行的shell

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

#!/bin/sh  
#该脚本为Linux下启动java程序的通用脚本。即可以作为开机自启动service脚本被调用,  
#也可以作为启动java程序的独立脚本来使用。  
#  
#  
#警告!!!:该脚本stop部分使用系统kill命令来强制终止指定的java程序进程。  
#在杀死进程前,未作任何条件检查。在某些情况下,如程序正在进行文件或数据库写操作,  
#可能会造成数据丢失或数据不完整。如果必须要考虑到这类情况,则需要改写此脚本,  
#增加在执行kill命令前的一系列检查。  
#  
#  
###################################  
#环境变量及程序执行参数  
#需要根据实际环境以及Java程序名称来修改这些参数  
###################################  
#JDK所在路径  
JAVA_HOME="/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.111-2.b15.el7_3.x86_64/jre"  #执行程序启动所使用的系统用户,考虑到安全,推荐不使用root帐号  
RUNNING_USER=root  #Java程序所在的目录(classes的上一级目录)  
APP_HOME=/opt/mapu/WEB-INF  #需要启动的Java主程序(main方法类)  
APP_MAINCLASS=org.mapu.common.AesUtil#拼凑完整的classpath参数,包括指定lib目录下所有的jar  
CLASSPATH=$APP_HOME/classes  
for i in "$APP_HOME"/lib/*.jar; do  CLASSPATH="$CLASSPATH":"$i"  
done  #java虚拟机启动参数  
JAVA_OPTS="-ms512m -mx512m -Xmn256m -Djava.awt.headless=true -XX:MaxPermSize=128m"  ###################################  
#(函数)判断程序是否已启动  
#  
#说明:  
#使用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  javaps=`ps -ef|grep APP_MAINCLASS|grep -v grep| awk '{print $2}'`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 >/dev/null 2>&1 &"  JAVA_CMD="$JAVA_HOME/bin/java $JAVA_OPTS -classpath $CLASSPATH $APP_MAINCLASS"  su - $RUNNING_USER -c "$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) "  su - $RUNNING_USER -c "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

 

转载于:https://my.oschina.net/yifanxiang/blog/817873

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/291785.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

统计 Github 2021 贡献过的开源项目

统计一下 2021 贡献过的开源项目Intro新的一年的开始了,有很多总结和回顾还没有做,今天就盘点一下贡献过的开源项目吧~起初想着手动地通过 Github Dashboard 来统计但是感觉有些麻烦,还得一个个地复制标题链接等,好麻烦&#xff0…

linux c之<setjmp.h>使用总结

1、爆代码 #include<setjmp.h> #include<unistd.h> #include<stdio.h> #include<stdlib.h>void f1(int, int, int, int); void f2(void);static jmp_buf jmpbuffer; static int globval; int i = 4; int main(void) {int autoval;register i…

Unit Three-Program test

编程练习——《C Primer Plus》 Unit Three-Program test Program_test_5 /* Program Test :一年大约有 3.15610^7秒。编写一个程序&#xff0c;提示用户输入年龄&#xff0c;然后显示该年龄对应的秒数。 */ #include<stdio.h> int main(void) {int i_age;double d…

IntentService使用

说实话&#xff0c;对于这个类在我实际工作中并没有用到过&#xff0c;通常也只是用了它的父类Service&#xff0c;通过官方文档可以看出类的层次结构: 而在今年的一次面试当中&#xff0c;有个面试官提起了它&#xff0c;所以虽说目前还没有真实在项目中用它&#xff0c;但是有…

如何使用 Barracuda 防火墙设置/保护 Azure 应用程序

&#xfeff;&#xfeff;如果某企业在 Windows Azure 上托管某个应用程序&#xff0c;该应用程序会在某个特定时间暴露到 Internet&#xff0c;以用于商业用途。公共 Internet 带来客户的同时也带来了攻击者。 Tim Omta 发表的新博客文章中介绍了如何使用 PaaS 应用程序之前的…

Git 简单命令行指令

为什么80%的码农都做不了架构师&#xff1f;>>> 这些git命令来自gitlab的简单提示&#xff0c;挺人性化&#xff0c;记录下。 Git 全局设置 git config --global user.name "yourname" git config --global user.email "yournamemail.com" 创…

python创_Python创建Windows 服务

Python 写windows 服务&#xff0c;需要使用 pywin32包。直接上代码&#xff1a;#encodingutf8Created on 2014-7-1author: wangmengnanimport osimport sysimport win32serviceutilimport win32serviceimport win32eventclass PythonService(win32serviceutil.ServiceFramewor…

C# 值类型的局限性

如果程序希望使用一个值类型实例来进行同步&#xff0c;通常都会是错误(bug)。但运行时应该认为这是非法并抛出异常吗?在下面的代码示例中如果两个不同的线程同时调用同一个Counter 实例的Increment 方法&#xff0c;将会发生什么?class Counter{private int _i;public int I…

linux之网络编程ICMP校验算法

1、ICMP校验算法代码 unsigned short cal_chksum(unsigned short *addr,int len) { int nleft len; int sum 0; unsigned short *w addr; unsigned short answer 0; /*把ICMP报头二进制数据以2字节为单位累加起来*/ while(nleft > 1) { sum *w; nle…

第4章 字符串和格式化输入/输出

学习笔记——《C Primer Plus》 第4章 字符串和格式化输入/输出4.1 前导程序4.2 字符串简介4.2.1 char 类型数组和 null 字符4.2.2 使用字符串4.2.3 strlen() 函数4.3 常量和 C 预处理器4.3.1 符号常量1. 使用**符号常量**的好处:2. 创建符号常量4.3.2 const 限定符4.3.3 转换说…

关于visual studio类视图和资源视图不显示类和资源的问题

今天因为要上一个项目&#xff0c;需要用到SSIS采集包&#xff0c;就打开以前做好的包来看了下&#xff0c;结果发现解决方案资源管理器不显示解决方案内容了。没有办法。百度不到&#xff0c;重装吧&#xff0c;再打开仍然不行&#xff0c;还是不能显示内容。后来在msdn论坛上…

ANT简明教程[转载]

一、ant关键元素 1. project元素 project 元素是 Ant 构件文件的根元素&#xff0c; Ant 构件文件至少应该包含一个 project 元素&#xff0c;否则会发生错误。在每个 project 元素下&#xff0c;可包含多个 target 元素。接下来向读者展示一下 project 元素的各属性。 1) name…

ios之第一个程序Hello word, I am chenyu !

1、下载Xcode 个人建议网上下载Xcode&#xff0c;快些&#xff0c;特么再应用商店下载像日了狗一样&#xff0c;还要填写资料&#xff0c; 最后资料没有写好&#xff0c;无效字符。2、新建项目 下载好了Xcode&#xff0c;一步一步往下点就行&#xff0c;然后create 项目然后找m…

小博老师解析Java核心技术 ——JSwing绘图技术

2019独角兽企业重金招聘Python工程师标准>>> [引言] 我们在学习Java编程的时候&#xff0c;如果需要开发客户端窗体类型的程序&#xff0c;可以使用JDK中的awt和swing库。本文开始小博老师就继续为大家演示Java窗体编程中的绘图技术&#xff0c;今天主要讲解绘图技术…

.NET6之MiniAPI(十三):健康检查

程序员开发程序&#xff0c;是“生”的过程&#xff0c;运维人员负责日常运维&#xff0c;是“养”的过程&#xff0c;在养的过程&#xff0c;运维人员希望在第一时间了解程序的状况&#xff0c;健康检查&#xff0c;是最基础的手段。var builder WebApplication.CreateBuilde…

npm 安装less插件_node+npm+webpack+less安装

本节主要内容&#xff1a;什么是LESS为什么选择LESS安装webpack编译环境什么是LessLESS是前端css样式预处理器中的一种&#xff0c;和它相同类型的语言还有Sass以及Stylus。它是css语言的扩展&#xff0c;增加了变量、混合、函数、继承等多种语法&#xff0c;让css样式的编写变…

UVa 11346 - Probability

纯粹数学题&#xff0c;推公式吧。注意边界处理精度控制就可以了。 #include <cstdio> #include <cmath> #define EPS 1e-7 int main() {int T; scanf("%d", &T);while (T--){double a, b, S; scanf("%lf %lf %lf", &a, &b, &…

linux之用 grep -r 关键字 快速搜索在目录下面的含有关键字的文件

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程 1、快速搜索在目录下面的含有关键字的文件 我们采用下面命令cd directoriesgrep -r 关键字2、搜索结果

python 抓包基于pypcap

2019独角兽企业重金招聘Python工程师标准>>> 1、查询python和python-dev是否安装 dpkg-query -l python dpkg-query -l python-dev #没安装就先安装 sudo apt-get install python python-dev 2、安装flex和bison sudo apt-get install flex bison3、下载libpcap并安…

推荐一个基于Dapr的 Red Dog 的完整微服务应用程序

微服务尽管构建起来非常困难&#xff0c;但它们已成为一种越来越流行的架构模式。随着开发人员开始将他们现有的单体代码库迁移到微服务系统&#xff0c;他们花费大量时间来处理分布式应用程序带来的固有挑战&#xff0c;例如状态管理和服务调用。通过引入Dapr 通过以 http/gRP…