精华内容
下载资源
问答
  • 2021-03-06 21:40:55

    最近,做好了一段儿程序,但是在ubuntu系统下需要用命令行输入命令启动。于是研究了一下Shell脚本启动的方法。

    刚开始接触Shell脚本,一头雾水。不过最终还是实现了,和大家分享一下:

    不过需要注意的是,路径和相关参数。

    #!/bin/sh

    #该脚本实现启动java程序,并保证不重复启动。

    APP_LOG="Test.log"

    APP_PATH="."

    APP_NAME="Test"

    #NUM=$#

    #TEMP=$CLASSPATH

    #若有其他附带的jar包,可用下面方式实现

    #libs=../lib/*

    #append(){

    # TEMP=$TEMP":"$1

    #}

    #for file in $libs; do

    # append $file

    #done

    export CLASSPATH=$APP_PATH

    export LANG=zh_CN

    #这里结合java提供的jps也可以实现

    res=`ps aux|grep java|grep $APP_NAME|grep -v grep|awk '{print $2}'`

    echo $res

    if [ -n "$res" ]

    then

    echo "APP already running."

    else

    nohup java -classpath $CLASSPATH $APP_NAME > $APP_LOG&

    echo $star

    sleep 3

    unset res

    res=`ps aux|grep java|grep $APP_NAME|grep -v grep|awk '{print $2}'`

    echo $res

    if [ -n "$res" ]

    then

    echo "$APP_NAME start success"

    else

    echo "$APP_NAME start fail"

    fi

    fi

    更多相关内容
  • shell启动jar程序脚本,可以根据传入的参数"start"、"stop"、"restart"启动当前目录下的jar程序
  • 本篇文章主要介绍了shell脚本运行java程序jar的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • 在项目中有个java工程部署在linux上,需要用shell脚本方法启动。工程结构,如下:bin下面是编译后java的文件,bat下面是一些启动脚本,bat中的lib中放的是该...3,通过java命令运行启动程序。cur_dir=$(pwd) 加载...

    在项目中有个java工程部署在linux上,需要用shell脚本方法启动。

    工程结构,如下:

    1405522651_1422.png

    bin下面是编译后java的文件,bat下面是一些启动脚本,bat中的lib中放的是该工程所需要的所有jar包。

    1405522651_5798.png

    1405522651_6463.png

    shell脚本内容,如下:

    1405522651_6102.png

    大概的步骤:

    1,首先,找到java的生存环境,jdk安装目录。

    2,其次,把工程依赖的jar包加载进来。

    3,通过java命令运行启动的程序。

    cur_dir=$(pwd) 加载当前目录,

    bin_dir=$(dirname $cur_dir)/bin 加载父级下的bin目录 (当前目录跟bin目录不处在同一层级)

    1、加载jdk环境

    复制代码 代码示例:

    if [ -d /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre ]

    then export JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre

    2、加载java运行命令

    复制代码 代码示例:

    if [ -f $JAVA_HOME/bin/java ]

    then export JAVA_EXE=$JAVA_HOME/bin/java

    3、加载bat子目录lib中的所有jar包

    复制代码 代码示例:

    temp=$cur_dir/lib

    for file in "$temp"/*.jar

    do

    path="$path":"$file"

    done

    CLASSPATH=$path:$bin_dir

    4、设置要启动的java程序

    复制代码 代码示例:

    MAIN_CLASS=cn.cntv.vms.scheduled.sample.runner.MyRunner2

    5、通过java命令运行java程序

    复制代码 代码示例:

    $JAVA_EXE -classpath $CLASSPATH $MAIN_CLASS &

    然后,使用linux sh命令运行run.sh即可,实现java程序的启动脚本。

    展开全文
  • 1、直接在shell脚本中执行class文件 代码目录如下: 在目录下执行bash test.sh命令 shell脚本test.sh的代码如下 java -Xmx2048m -Xms2048m -XX:MaxNewSize=2048m -XX:MaxPermSize=2048m -XX:PermSize=2048M -XX:-...

    1、直接在shell脚本中执行class文件
    代码目录如下:
    在这里插入图片描述
    在目录下执行bash test.sh命令
    shell脚本test.sh的代码如下

    java -Xmx2048m -Xms2048m -XX:MaxNewSize=2048m -XX:MaxPermSize=2048m -XX:PermSize=2048M -XX:-UseGCOverheadLimit -Djava.awt.headless=true -verbose:gc -Xloggc:/logs/gc.log -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintHeapAtGC StartByShell
    

    2、在shell脚本中执行jar包中的main文件
    这里用到https://www.cnblogs.com/jiftle/p/9068354.html jar的压缩和解压的相关知识
    具体步骤如下:
    (1)首先我们需要编辑MANIFEST.MF文件中的Main-Class使其指定具体的包名、类名,编辑MANIFEST.MF文件时要注意格式,案例可以看https://www.cnblogs.com/jiftle/p/9068354.html
    在这里插入图片描述

    非shell脚本执行命令如下:
    jar cvfm test.jar MANIFEST.MF StartByShell.class
    java -jar test.jar
    jar打包有个坑,就是m不自动生成MANIFEST.MF,而是用我们自己创建的,另外直接用jar打包要注意查看打包的包结构,否则执行会报错StartByShell.jar中没有主清单属性

    shell脚本代码如下:

    java -jar -Xmx2048m -Xms2048m -XX:MaxNewSize=2048m -XX:MaxPermSize=2048m -XX:PermSize=2048M -XX:-UseGCOverheadLimit -Djava.awt.headless=true -verbose:gc -Xloggc:/logs/gc.log -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintHeapAtGC test.jar &
    

    下图为test.jar解压目录:
    在这里插入图片描述

    3、maven打jar包并通过命令运行起来

    maven需要的build https://www.cnblogs.com/acm-bingzi/p/6625303.html
    本地项目实践:

    在这里插入图片描述
    打好的jar包结构:
    在这里插入图片描述
    解压jar包:jar -xvf shell-script-1.0-SNAPSHOT.jar
    直接运行jar包:java -jar shell-script-1.0-SNAPSHOT.jar

    知识点:
    如何使用idea创建MANIFEST.MF https://www.cnblogs.com/hongmaju/p/14212183.html
    jar打包https://www.cnblogs.com/jiftle/p/9068354.html
    shell编程启动java类 https://blog.csdn.net/u010285684/article/details/94569065
    nohup命令 https://www.runoob.com/linux/linux-comm-nohup.html

    展开全文
  • 详细的linux shell脚本启动java代码
  • shell脚本启动Java程序测试工程
  • /bin/sh#利用pwd命令获取当前工程目录,实际获取到的是该shell脚本的目录。再利用sed命令将/bin替换为空Project_HOME=$(echo `pwd` | sed 's/\/bin//')#存放进程文件ProjectPIDFILE=$Project_HOME/project.pid#case...

    #声明执行该脚本的程序使用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

    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

    展开全文
  • 使用shell脚本运行java程序

    千次阅读 2021-02-12 20:10:06
    可能写得有不好的地方,多多见谅)平时我们编写完java程序后,运行调试都是ide帮我们弄好的,但是实际情况肯定不会用ide运行,而是打包成jar,用命令行执行命令来运行程序,所以本着项目部署的方便,我就写了个shell脚本....
  • 1、部署项目 [root@peipei3514 src]# unzip -oq Linux_Java_Shell.war -d /usr/local/Linux_Java_Shell 其实就是不询问将war包传到/usr/local/Linux_Java_Shell进行解压。...#该脚本为Linux下启动java
  • linux shell脚本启动java。 ---------------------------------------- Windows编辑的sh,在linux会报错: shell unexpected end of file 解决办法: vim test.sh :set fileformat=unix :wq ----------------------...
  • shell脚本启动java进程

    2022-06-21 16:27:32
    shell脚本启动Java进程
  • 主要介绍了Java程序去调用并执行shell脚本及问题总结,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
  • ps -ef |grep java|grep
  • 利用Runtime.execute方法,我们可以在Java程序中运行Linux的Shell脚本,或者执行其他程序
  • 使用shell脚本启动服务 后台启动一个服务 1.1 查看服务的状态 上面这个繁锁的命令,其实可以写成一个脚本,如下 2.1 如果写成脚本以后就可以使用以下的命令了 我们在启动一个java服务的时候,如果不使用命令,...
  • shell 脚本启动jar程序

    2021-03-06 01:36:41
    Linux下启动jar包程序,直接上步骤:1、首先,maven项目打成一个jar包,同时使用dependency:copy-dependencies命令导出依赖的jar包,把导出的包和项目jar包都放进lib文件夹里2、编写shell脚本:#!/bin/bashexport ...
  • 重启java程序shell脚本

    2020-10-16 09:05:52
    linux中java项目需要重启一般使用先找到进程杀掉进程,然后找到项目启动,整个过程不算复杂,但是每次都操作一遍太麻烦,我这里把这个过程整理成shell脚本,大家可以修改里面项目名称,每次直接执行这个命令重启项目...
  • linux系统java服务自启动shell脚本及服务cpu内存占用监控脚本
  • 在项目中,程序部署到linux环境中,采用.sh的形式启动java程序启动类 当然,前提是得将java的各种jar都放入到linux程序中,项目shell脚本如下: #!/bash/bin JAVA_HOME=/usr/local/jdk export AMLSERVER_HOME=/...
  • linux下shell脚本启动java程序jar包

    千次阅读 2015-12-21 10:27:37
    SERVER=/home/lytz/zhengzy/myapp_email cd $SERVERstart(){ echo “start project…” JAVA_HOME=/usr/java/jdk1.7.0_79 export JAVA_HOME PATH=JAVAHOME/bin:.:JAVA_HOME/bin:.:PATH export
  • Java程序多数情况下都会用到一些第三方的类库,如果仅用到几个jar文件,写到java命令里就好,但是依赖的jar文件很多的情况,写到java命令里就不好了,而且如果jar文件被替换,名字变了,就需要改java命令,所以最好...
  • 思路:编写shell,并在shell中调用java命令启动java程序(main)程序。 步骤: 一.准备java程序。 二.编写shell程序,以启动java程序。 三.执行shell(.sh),查看程序运行结果。 下面进入正题: 一.准备java...
  • 主要介绍了SHELL脚本监控JAVA进程,需要的朋友可以参考下
  • shell启动脚本(java)

    2021-03-05 19:45:34
    前言将项目部署到服务器后,为了方便启动,我们通常会编写一个shell脚本,一键执行启动服务,这样可以为我们节约大量运维成本。启动方式:sh shell.sh start (sh命令,脚本名称,执行操作)下面是实际案例分析image....
  • 一、Java启动脚本 1、编写shell vim java-service.sh #! /bin/bash #****************************************************** # Author : 枫叶20214 # Last modified : 2022-05-06 # Filename : install-docker #...
  • 今天小编就为大家分享一篇java调用shell命令并获取执行结果的示例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 解决有java调用shell脚本需求的童鞋们,包含一些调用的测试方法,有问题可留言回复。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 131,524
精华内容 52,609
关键字:

shell脚本启动java类

java 订阅