`

shell 启动、停止、重启java程序

 
阅读更多
  1. #!/bin/sh
  2. SERVER=/home/java/server
  3. cd$SERVER
  4. case"$1"in
  5. start)
  6. nohupjava-Xmx128m-jarserver.jar>$SERVER/server.log2>&1&
  7. echo$!>$SERVER/server.pid
  8. ;;
  9. stop)
  10. kill`cat$SERVER/server.pid`
  11. rm-rf$SERVER/server.pid
  12. ;;
  13. restart)
  14. $0stop
  15. sleep1
  16. $0start
  17. ;;
  18. *)
  19. echo"Usage:run.sh{start|stop|restart}"
  20. ;;
  21. esac
  22. exit0

shell学习2

 

 

 

#声明执行该脚本的程序使用sh或bash
#! /bin/sh

#利用pwd命令获取当前工程目录,实际获取到的是该shell脚本的目录。再利用sed命令将/bin替换为空
Project_HOME=$(echo `pwd` | sed 's/\/bin//')

#存放进程文件
ProjectPIDFILE=$Project_HOME/project.pid

#case语句,对应结束为esac 特殊变量$1,该变量包含有传递给该脚本的第一个参数值
#一般运行时,都是./**** start or stop ,所以参数值如下所示
case $1 in

#输入参数为start时
start)

#输出starting project ... ,echo可以看成print to screen
echo "Starting project ... "

#设置变量Heap的大小,表示JVM虚拟机堆内存的大小,XMS初始化内存,XMX最大内存,一般两个相等且不超过2G。
HEAP_MEMORY=512m

#永久域内存,永久区域用来存放Java类及其他虚拟机自己的静态数据,
#也包含初始化和最大值,一般设置相等,减少达到初始化值时去申请内存的开销
PERM_MEMORY=64m

#JMX连接端口
JMX_PORT=7001

#jvm启动部分参数
JAVA_OPTS="-server -Djava.nio.channels.spi.SelectorProvider=sun.nio.ch.EPollSelectorProvider -XX:+HeapDumpOnOutO
fMemoryError -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.j
mxremote.ssl=false"

#shift 命令,shift 命令执行前变量 $1 的值在 shift 命令执行后就不可用,位置变量的指向向后移1次
shift

#($*)所有参数赋给ARGS,当然$1除外
ARGS=($*)

#if循环加case语句,作用就是把shell的参数值赋给之前定义的变量,比如./*.sh start -JmxPort 8888

#则定义的JMX_PORT=7001即变为8888
for ((i=0; i<${#ARGS[@]}; i++)); do

case "${ARGS[$i]}" in
-D*) JAVA_OPTS="${JAVA_OPTS} ${ARGS[$i]}" ;;
-Heap*) HEAP_MEMORY="${ARGS[$i+1]}" ;;
-Perm*) PERM_MEMORY="${ARGS[$i+1]}" ;;
-JmxPort*) JMX_PORT="${ARGS[$i+1]}" ;;
esac
done

#完整的jvm启动参数,将之前定义的变量组合。
JAVA_OPTS="${JAVA_OPTS} -Xms${HEAP_MEMORY} -Xmx${HEAP_MEMORY} -XX:PermSize=${PERM_MEMORY} -X X:MaxPermSize=${PERM_MEMORY} -Dcom.sun.management.jmxremote.port=${JMX_PORT} -Duser.dir=${Projec t_HOME}"

#输出参数
echo "start jvm args ${JAVA_OPTS}"

#此条语句最为重要,使用nohup命令启动jar包,nohup命令就是让程序永远在后台运行
nohup java $JAVA_OPTS -jar ${Project_HOME}/bin/project.jar &

# $!为系统变量,表示上一个子进程的进程号。 shell遇到”>”操作符,会判断右边文件是否存在,如果存在就先删除,并且创建新文件。
#不存在直接创建。无论左边命令执行是否成功。右边文件都会变为空。
#重定向不是很理解,个人认为就是将进程号保存在 project.pid文件中
echo $! > $ProjectPIDFILE

#打印系统启动成功
echo STARTED

#一直不知道两个连着的分号是啥意思,我想应该就是break的意思
;;

#如果$1为stop时
stop)
echo "Stopping project ... "

#首先判断project.pid是否存在,若不存在返回没有找到文件。-f 判断后面参数是否是一个文件,若是返回1
if [ ! -f $ProjectPIDFILE ]
then
echo "error: count not find file $ProjectPIDFILE"
exit 1
else

#杀掉系统进程 $(cat $ProjectPIDFILE)
kill -9 $(cat $ProjectPIDFILE)
rm $ProjectPIDFILE
echo STOPPED
fi
;;

#如果$1不是start、stop等任意字符时,
*)
echo "Exec ... "

#调用ant来执行这个命令
ant $*
;;

#结束case语句
esac

exit 0

 

 

分享到:
评论

相关推荐

    java spring-boot shell 启动器

    Java Spring-Boot Shell 启动器是一个实用工具,它提供了通过Shell脚本来管理Spring-Boot应用的便捷方式。这个启动器允许用户启动、停止、重启和查看应用日志,而无需手动使用`kill`命令来结束进程。在IT环境中,...

    Tomcat停止与启动shell

    标题 "Tomcat停止与启动shell" 指的是一个用于管理Tomcat服务器的脚本,通常这个`restart.sh`文件是用来自动化Tomcat服务的启动和停止操作的。Tomcat是Apache软件基金会的一个开源项目,是一个广泛使用的Java ...

    centos上通过sh文件启动jar等程序与命令详解.zip

    在Linux系统,特别是CentOS这样的基于Red Hat的发行版中,使用shell脚本来启动和管理Java应用程序(如jar包)是一种常见的做法。本文件包提供了一个名为`run.sh`的shell脚本模板以及一个`run命令详解.docx`文档,...

    Linux 启动停止SpringBoot jar 程序部署Shell 脚本的方法

    在Linux环境中,管理和部署Java应用程序,特别是Spring Boot应用,通常会使用Shell脚本来自动化启动、停止等操作。本文将详细讲解如何编写一个用于启动和停止Spring Boot jar程序的Shell脚本,以及脚本中涉及的关键...

    shell java

    - `shell`脚本可以用于自动化`Java`应用的部署、启动、停止、重启等操作。 - 结合`cron`定时任务,定期执行脚本进行定时任务或维护工作。 8. **脚本参数传递**: - `$1`, `$2`, ... `$n`表示脚本接收到的参数,`...

    shell启动项目

    - **监控与重启**:使用`nohup`或`screen`命令可以让程序在后台运行,即使用户退出Shell会话也不会停止。同时,可以结合`crontab`定时任务或`systemd`服务来实现自动重启。 4. **shell_test文件** 在提供的压缩包...

    将java程序运行为后台服务demo

    在Java开发中,有时我们需要将一个Java程序设计为后台服务,以便它能在系统启动时自动运行,无需用户交互。这通常适用于服务器应用、定时任务或其他需要持续运行的任务。本示例将详细介绍如何将Java程序转化为后台...

    tomcat启动shell

    在开发和运维过程中,通过编写Shell脚本可以自动化Tomcat的启动、停止和重启等操作,提高效率。 在描述中提到的博文链接指向了ITEYE博客上的一篇文章,尽管具体内容没有给出,但通常这类文章会详细介绍如何创建和...

    Linux一键启动多个jar

    这通常涉及到编写一个bash shell脚本,该脚本可以依次执行Java命令来运行、停止或重启多个.jar文件。例如,`gollum.sh`可能是这样一个脚本,它会按照特定的顺序执行这些操作。 在`gollum.sh`脚本中,我们可能看到...

    javaAgent实现补丁不重出功能,通过attach实现程序运行时加载,同时通过shell脚本部署到容器内

    JavaAgent是一种强大的技术,它允许在Java应用程序运行时对其进行拦截和修改,而无需停止或重新启动应用。在本文中,我们将深入探讨如何利用JavaAgent来实现补丁的动态加载,以及如何通过shell脚本将其部署到容器...

    Linux通用java程序启动脚本代码实例

    本文主要介绍了一个通用的Linux java程序启动脚本代码实例,该脚本可以用来启动java程序,支持启动、停止、重启和查看是否正在运行的功能。下面是对该脚本的详细解释: 一、环境变量及程序执行参数 该脚本中定义了...

    shell脚本发布jar包服务,war包服务

    在Java应用部署中,shell脚本通常用于启动、停止、监控服务等操作。 - `tomcat.sh`可能是一个用于管理Tomcat服务器的脚本,如启动、停止、重启Tomcat实例,或者配置环境变量。 2. **Java Archive (JAR) 文件**: ...

    linux的spring boot项目的启动停止脚本

    这些应用程序可以被设计为“可执行的”JAR或WAR文件,可以直接通过`java -jar`命令启动。然而,在生产环境中,我们往往需要更高级的控制方式,这就引入了启动脚本的需求。 首先,让我们了解一下如何创建一个简单的...

    Eclipse打包Java应用程序及在Linux系统上的部署运行.pdf

    - 要停止运行的Java程序,首先使用`ps -aux`命令找到程序的进程ID,然后使用`kill`命令杀掉该进程。 5. **处理Java版本问题** - CentOS默认的JDK版本可能不兼容某些应用程序。例如,如果SMSAPI需要JDK 1.6,而...

    linux中设置tomcat自启动

    最后,为了确认一切设置无误,你可以使用 `service tomcat start`、`service tomcat stop`、`service tomcat restart` 和 `service tomcat status` 命令来测试Tomcat服务的启动、停止、重启和当前状态。 通过以上...

    简易java运维工具

    2. Shell命令执行:Java程序可以调用Runtime或ProcessBuilder类来执行Linux Shell命令,如`ls`, `ps`, `top`等,获取服务器状态信息。 3. 自定义脚本:将Java与Shell脚本结合,可以创建复杂的运维流程,比如定期...

    CentOS7设置jar应用程序开机启动的方法

    整个java程序就将停止,为了解决这个问题,可以将jar包设置为后台服务,并进一步设置为系统服务和开机自启 1. 编写启动脚本 脚本存放位置随意,本例保存在了/etc/rc.d/init.d/file-preview-server.sh # !/bin/...

    Linux编辑启动、停止与重启springboot jar包脚本实例

    在Linux环境中,管理和维护Spring Boot应用程序常常涉及到启动、停止和重启操作。本文将详细解析如何在Linux中通过脚本实现这些功能,特别是针对Spring Boot的jar包应用。 首先,了解Spring Boot的应用配置文件。...

    Linux启动jar包的shell脚本

    在Linux系统中,为了方便管理和自动化执行Java应用程序,通常会编写shell脚本来封装启动、停止和重启jar包的命令。本文将深入解析标题为“Linux启动jar包的shell脚本”的技术要点,以及如何通过shell脚本来实现这些...

    java+powershell 控制windows

    在这个场景下,我们可以利用 Java 编写的程序来调用 PowerShell 命令,实现对 Windows 的各种操作。 首先,让我们详细了解如何通过 Java 调用 PowerShell 脚本: 1. **调用 PowerShell 命令**: 在 Java 中,我们...

Global site tag (gtag.js) - Google Analytics