纯手写,只需要修改一些配置变量,就可以用来做起动脚本了。
并且除了能起动、还支持关闭、重启、查看是否正在运行的功能。
给大家演示一下效果:
#!/bin/bash # MAINTAINER gaoyaohua "gaoyh@tingyun.com" www.updn.cn # tingyun service APPNAME=dc-backend-server CONF=spring-config-server.xml APPDIR=$(dirname $(cd `dirname $0`; pwd)) TINGYUNDIR=$(dirname ${APPDIR}) JAVA_HOME=${TINGYUNDIR}/java LIB=${APPDIR}/target/lib CLASSPATH=${APPDIR}/target/conf PROPS_FILE=${APPDIR}/conf/conf-deploy.properties PROPS_ENCODING=UTF-8 LOGDIR=${APPDIR}/logs APPPID=${APPDIR}/run/${APPNAME}.pid LOCKFILE=${APPDIR}/lock/$APPNAME SHUTDOWN_WAIT=1 # java options JAVA_OPTS="-Xmx2048M -Xms512M -Xmn256M -XX:SurvivorRatio=1 -Xss256k -XX:PermSize=32M -XX:MaxPermSize=72M -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:CMSFullGCsBeforeCompaction=0 -XX:+CMSClassUnloadingEnabled -XX:LargePageSizeInBytes=128M -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=80 -XX:SoftRefLRUPolicyMSPerMB=0 -XX:+PrintClassHistogram -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:-HeapDumpOnOutOfMemoryError -Xloggc:"$LOGDIR"/$APPNAME-gc.log -XX:HeapDumpPath="$LOGDIR"/$APPNAME-dump" # jmxremote options 默认注释为关掉 #JMX_OPTS=-Dcom.sun.management.jmxremote.port=10004 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false # enter main class start ENTER="com.networkbench.newlens.datacollector.Bootstrap" if [ -d "$LIB" ]; then for i in "$LIB"/*.jar; do CLASSPATH="$CLASSPATH":"$i" done fi start() { kpid="`ps x | grep "DappName=$APPNAME" | grep -v grep | awk '{print $1}'`" if [ -n "$kpid" ] && [ -f $LOCKFILE ] && [ -f $APPPID ];then read kpid < $APPPID echo -e "$APPNAME is \033[32m running \033[0m" return 0 fi echo -n "$APPNAME start " && echo -ne "\033[s ." nohup $JAVA_HOME/bin/java -DappName="$APPNAME" $JAVA_OPTS -Dtingyunpath="$APPDIR" -Dsharedpath="$TINGYUNDIR/shared" -Dwork.dir="$APPDIR" -Dconf=$CONF -Dprops=$PROPS_FILE -DpropsEncoding=$PROPS_ENCODING -Dnohup=true -Dpid=$$ -Dpid.file=$APPPID -DdiagnoseOnSignal=ALRM $JMX_OPTS -cp $CLASSPATH $ENTER >> "$LOGDIR"/nohup_"$APPNAME" 2>&1 & RETVAL=$? && [ $RETVAL = 0 ] && touch $LOCKFILE && echo -e "\033[u\033[K [ \033[32m ok \033[0m ]" echo `date "+%F %T"` $APPNAME started. >> "$LOGDIR"/$APPNAME-restart.log return $RETVAL } stop() { kpid="`ps x | grep "DappName=$APPNAME" | grep -v grep | awk '{print $1}'`" #if [ ! -n "$kpid" ] && [ ! -f $LOCKFILE ] && [ ! -f $APPID ];then if [ ! -n "$kpid" ];then echo -e "$APPNAME is \033[31m not running \033[0m" return 1 fi count=-1 if [ -f $LOCKFILE ] && [ -f $APPID ]; then read kpid < $APPPID echo -n -e "$APPNAME stop " && echo -n -e "\033[s"; kill $kpid read kpid < $APPPID count=0; let kwait=$SHUTDOWN_WAIT until [ `ps --pid $kpid | grep -c $kpid` = '0' ] || [ $count -gt $kwait ] do echo -n -e "."; sleep 1 let count=$count+1; done fi if [ $count -gt $kwait ] && [ "$count" -eq "-1" ];then echo -e "\033[u\033[K [\033[31m failed \033[0m]" return -1 #kill -9 $kpid fi if [ $count -le $kwait ]; then echo -e "\033[u\033[K [ \033[32m ok \033[0m ]" fi rm -f $LOCKFILE $APPPID } status() { kpid="`ps x | grep "DappName=$APPNAME" | grep -v grep | awk '{print $1}'`" if [ -n "$kpid" ];then if [ -f $LOCKFILE ] && [ -f $APPID ];then echo -e "$APPNAME is \033[32m running \033[0m" else echo -e "$APPNAME is \033[33m running \033[0m but lockfile or pidfile not ready" fi else echo -e "$APPNAME is \033[31m not running \033[0m" fi } info() { echo $APPNAME } 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通用Java程序启动脚本】是用于在Linux操作系统中便捷地启动、停止、重启以及检查Java应用程序状态的脚本。这种脚本通常采用bash语言编写,能够灵活适应不同的Java项目,只需调整其中的配置变量即可。以下是...
在Linux系统中,Java开发者经常需要管理Spring Boot应用程序,包括启动、停止和重启等操作。为了简化这个过程,我们可以创建一个批处理脚本,通常是一个`.sh`文件,来实现一键执行这些任务。本文将详细讲解如何编写...
在IT行业中,jar包是Java应用程序的标准打包格式,它包含了运行Java程序所需的所有类和资源。Spring Boot是一个流行的框架,用于简化Spring应用的创建和部署,而Maven是Java项目管理工具,帮助开发者管理和构建项目...
Java编写的山寨QQ,多人聊天+用户在线,程序分服务端和客户端,典型C/S结构, 当用户发送第一次请求的时候,验证用户登录,创建一个该qq号和服务器端保持通讯连接得线程,启动该通讯线程,通讯完毕,关闭Scoket。...
在Linux 64位系统上安装...对于Java开发人员来说,了解如何在Linux环境下安装和配置MySQL数据库非常重要,因为很多Java应用程序都使用MySQL作为后端存储。熟悉这些步骤将有助于在开发和部署环境中快速设置数据库服务。
在Linux环境下部署应用程序,尤其是Web服务,通常涉及多个步骤。在这个场景中,我们主要关注的是如何在Linux系统上安装和配置Nginx服务器。然而,提供的内容实际上描述了部署Tomcat的过程,而没有直接涉及Nginx。...
保存并关闭文件后,运行`source /etc/profile`使改动立即生效,或者重启系统。 除了`PATH`,还有其他常用的环境变量: 1. `HOME`:用户的主目录,通常为`/home/username`。 2. `USER`:当前登录的用户名。 3. `...
- **启动与停止**:在Windows上,可以通过`bin`目录下的`startup.bat`和`shutdown.bat`脚本来启动和关闭Tomcat;在Linux上,使用对应的`sh`文件。 - **配置文件**:`server.xml`是Tomcat的主要配置文件,定义了...
3. **目录结构**:Tomcat的目录结构清晰,如`conf`目录存储配置文件,`webapps`存放Web应用,`logs`记录日志,`temp`存储临时文件,`bin`包含启动和关闭脚本等。 4. **安全性**:Tomcat支持多种安全机制,如SSL/TLS...
- 使用`systemctl`命令启动、停止或重启Tomcat服务。 #### 五、访问Tomcat - 在浏览器中输入`http://localhost:8080`(默认端口)来访问Tomcat的欢迎页面。 - 如果您部署了应用程序,可以通过`...
配合uboot(通用引导加载程序)和nand芯片,可以构建一个稳定可靠的系统更新框架。 uboot是嵌入式设备上常见的引导加载程序,它在系统启动时执行,负责初始化硬件环境,加载操作系统内核,并将控制权交给内核。在...
##### Linux环境下安装 - **通用步骤**: - 下载Redis源码包。 - 解压并进入目录。 - 编译安装。 - 启动服务端(`./redis-server` 或 `./redis-server ../redis.conf`)。 - 启动客户端(`./redis-cli`)进行...
4. **Perl**:Perl是一种通用的、解释型的、动态的编程语言,XAMPP提供Perl支持,尽管在现代Web开发中Perl的使用不如以前普遍,但它在某些场景下仍然有价值。 5. **安装过程**:"xamppinstaller.exe"是XAMPP的安装...
Robot Framework是一个通用的自动化框架,支持关键字驱动测试方法,而AppiumLibrary则是其扩展,用于对接Appium,实现对iOS和Android应用程序的自动化测试。 在"robotframework-appiumlibrary-1.4.2.tar.gz"这个...
- **启动、停止和重启**:介绍如何控制OpsCenter服务的生命周期。 - **升级OpsCenter**:指导用户如何从旧版本平滑过渡到新版本。 #### 配置 OpsCenter提供了丰富的配置选项,以满足不同场景的需求: - **安全性*...
1. **启动安装程序**:双击下载好的安装文件,启动安装向导。 2. **接受许可协议**:阅读并同意软件许可协议。 3. **选择安装路径**:自定义安装路径,避免使用默认路径可能导致权限问题。 4. **选择组件**:勾选...
- 为了确保与Linux系统的兼容性,建议不要选择最新版本的Python(尽管安装过程对所有版本都是通用的),而是选择较新但非最新的版本,例如Python 3.7或3.8等。 2. **安装Python**: - 双击下载好的安装包进行安装...