写了个启动程序, 调优jvm的脚本

#!/bin/bash

MEM=`free -m | grep Mem | awk '{print int($2 * 90 / 100)}'`

JAVA_OPTS="-server \
-Xmx${MEM}m -XX:+UseG1GC -XX:MaxGCPauseMillis= -XX:ParallelGCThreads=\
" APP_HOME=`dirname $(pwd)`
APP_JAR_NAME="idfa.web-1.0.jar"
PID_FILE="$APP_HOME/pid.file" pid= commond="$JAVA_OPTS -jar $APP_HOME/libs/$APP_JAR_NAME"
#commond="nohup java -jar $APP_HOME/libs/$APP_JAR_NAME 1 >> $APP_HOME/nohup.log 2>&1 &" getpid() {
if [ -f "${PID_FILE}" ]; then
pid=`cat ${PID_FILE}`
echo "----------------------------------------"
echo "pid file with ${pid}"
echo "----------------------------------------"
pid_count=`ps aux | grep idfa.web-1.0 | grep " ${pid} " | grep -v grep | wc -l`
if [ ${pid_count} -eq ]; then
echo "${pid} dose not exist!"
rm -rf ${PID_FILE}
pid=
fi
else
pid=
fi
} startup(){
getpid
echo "======================================="
if [ ${pid} -ne ]; then
echo "${APP_JAR_NAME} already started(PID=${pid})"
echo "======================================="
else
echo "Starting ${APP_JAR_NAME}"
ulimit -c unlimited
cd ${APP_HOME} echo $commond nohup java $commond & echo $! > ${PID_FILE} sleep getpid if [ ${pid} -ne ]; then
echo "(PID=${pid})...[Success]"
echo "======================================="
else
echo "[Failed]"
echo "======================================="
exit -
fi
cd -
fi
} shutdown(){
getpid
echo "======================================="
if [ ${pid} -ne ]; then
echo "Stopping ${APP_JAR_NAME}(PID=${pid})..."
kill - ${pid}
getpid
while [ ${pid} -ne ]
do
sleep
getpid
done
echo "[Success]"
echo "======================================="
else
echo "${APP_JAR_NAME} is not running"
echo "======================================="
fi
} shutdown_force(){
getpid
echo "======================================="
if [ ${pid} -ne ]; then
echo "Stopping ${APP_JAR_NAME}(PID=${pid})..."
kill - ${pid}
getpid
while [ ${pid} -ne ]
do
sleep
getpid
done
echo "[Success]"
echo "======================================="
else
echo "${APP_JAR_NAME} is not running"
echo "======================================="
fi
} status(){
getpid
echo "======================================="
if [ ${pid} -ne ]; then
echo "${APP_JAR_NAME} is running(PID=${pid})"
echo "======================================="
else
echo "${APP_JAR_NAME} is not running"
echo "======================================="
fi
} case "$1" in
start)
startup
;;
stop)
shutdown
;;
force)
shutdown_force
;;
restart)
$ stop
sleep
$ start
;;
status)
status
;;
*)
exit
esac

linux-程序发布脚本的更多相关文章

  1. linux 服务发布脚本升级,远程发布,指定拉取远程dev,test等分支代码

    1.本地发布脚本 publish.sh #!/bin/sh currentDay=`date +%Y%m%d` currentTime=`date +%Y%m%d%H%M%S` tomcat1=/da ...

  2. Linux程序守护脚本

    不废话,直接上脚本,[]注释的下发语句需要按需替换: #!/usr/bin/env bash PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/us ...

  3. 不错的linux下通用的java程序启动脚本

    不错的linux下通用的java程序启动脚本(转载) 虽然写起动shell的频率非常不高...但是每次要写都要对付一大堆的jar文件路径,新加jar包也必须要修改起动shell. 在网上找到一个挺好的 ...

  4. Linux 程序启停脚本

    start.sh #!/bin/sh java -jar ./program.jar & echo $! > /var/run/program.pid stop.sh #!/bin/sh ...

  5. [置顶] Linux下发布QT程序

    Linux下发布QT程序 概述 无论在windows下还是在linux下,可执行程序的运行都依赖于相关的运行库,我们需要将依赖的库找到放到特定的位置,让可执行文件能够找到.在不知道可执行文件依赖哪些库 ...

  6. 【linux】Shell脚本启动程序

    Linux 下后台脚本启动Jar程序 Nohup后台输出运行日志 cd /home/zeze/jar/WeiboPost java -jar WeiboAutoPost.jar ../configur ...

  7. 『学了就忘』Linux软件包管理 — 49、拓展:Linux中通过脚本安装程序

    目录 1.脚本程序简介 2.Webmin安装 (1)简介 (2)安装 (3)使用 1.脚本程序简介 脚本程序包并不多见,所以在软件包分类中并没有把它列为一类.它更加类似于Windows下的程序安装,有 ...

  8. Linux打包免安装的Qt程序(编写导出依赖包的脚本copylib.sh,程序启动脚本MyApp.sh)

    本文介绍如何打包Qt程序,使其在没有安装Qt的系统可以运行. 默认前提:另外一个系统和本系统是同一个系统版本. 1,编写导出依赖包的脚本copylib.sh #!/bin/bash LibDir=$P ...

  9. Asp.NetCore程序发布到CentOs(含安装部署netcore)--最佳实践(二)

    Asp.NetCore程序发布到CentOs(含安装部署netcore)--最佳实践(一) 接上一篇 3. Nginx配置反向代理 3.1 cnetos 安装nginx 首先,我们需要在服务器上安装N ...

  10. Linux上 发布.Net Core

    环境准备 下面我们使用VM虚拟机.我这里安装的Linux系统是centos7 软件提供: VM: https://www.vmware.com/cn.html centos7 Minimal :htt ...

随机推荐

  1. kepware http接口 c语言 ruby

    读取某变量的值 require 'uri' require 'net/http' url = URI("http://127.0.0.1:39321/iotgateway/read?ids= ...

  2. ubuntu下mysql远程连接

    第一步: vim /etc/mysql/my.cnf找到bind-address = 127.0.0.1 注释掉这行,如:#bind-address = 127.0.0.1               ...

  3. 《mysql必知必会》学习_第四章_20180724_欢

    P27: select prod_name from products; # select 列 from 表 # 从表products 中检索 名为 prod_name 的列 P28 多个语句一起必须 ...

  4. Python自动化开发 - 内置函数总结

    Python解释器提供了很多内置函数 参考链接:https://docs.python.org/3.6/library/functions.html 一.数学相关 1.绝对值:abs(-1) 2.最大 ...

  5. EBS Custom Password Rules

    https://blogs.oracle.com/manojmadhusoodanan/entry/custom_password_rules Custom Password Rules By Man ...

  6. FormatSQL

    核心提示:在一些论坛,常看到有人拼接SQL的时候,喜欢直接硬拼,结果就是出现一大堆加号和单引号,不仅写起来麻烦(你得小心该连续写多少个单引号),SQL的可读性也相当差....稍微好一点的方法是,使用Q ...

  7. javascript变量浅析

    变量声明 javascript 使用var + 变量名 声明变量,因为javascript是弱类型语言, 所有我们可以随意更改已有变量的类型. var b=1; b='2', 另外不同于c#中的var ...

  8. 在 Centos7 的KVM上启用嵌套虚拟化

    1.嵌套虚拟化意味着在虚拟机内配置虚拟化环境.换句话说,我们可以说嵌套虚拟化是虚拟机管理程序hypervisor的一个特性,它允许我们通过虚拟化管理程序(宿主机)的硬件加速在虚拟服务器内安装和运行虚拟 ...

  9. C# WPF 用MediaElement控件实现视频循环播放

    在WPF里用MediaElement控件,实现一个循环播放单一视频的程序,同时可以控制视频的播放.暂停.停止. 一种方式,使用MediaElement.MediaEnded事件,在视频播放结束后,自动 ...

  10. .net图表之ECharts随笔03-热力地图

    基于01和02 要得到如图所示的热力地图(我从NuGet上下载的包没有heatmap.js文件,没法直接搞热力图,只好暂时先搞着地图.后面尽量搞一下),一般要设置四个参数——title.tooltip ...