Linux上运行jar包的几种方式

一、方式

1、一般分文两种,一种是打成war包放到tomcat里面;另一种就是打成jar包直接运行,jar包里面自带tomcat;根据自己需要来决定使用哪种方式,这里我使用的是jar包方式

二、启动

1、直接启动:java -jar demo.jar

这种启动方式适合自己测试,因为一般部署在Linux上,这种方式关闭会话窗口或者ctrl+c都会关闭Java

2、后台启动:java -jar demo.jar &

这种方式会在后台静默运行,关闭会话窗口会中断Java,和上一种一样,这两个日志都是打印在窗口的,关闭会话就没了

3、nohup启动:nohup java -jar demo.jar &

这种会把日志打印到nohup.out文件中,但只会打印标准输出不会打印错误输出,关闭通过pid号来kill掉

4、nohup启动:nohup java -jar demo.jar>/root/demo.log 2>&1 &

这种会把普通输出和错误输出都打印到demo.log中

# 启动/停止等脚本
#!/bin/sh

ENV=dev
APP_HOME="你的项目路径"
APP_NAME=MyDemo
RUNNING_USER=root
LOG_DATE=`date +%Y%m%d%H%M%S`

#创建日志路径
if [[ ! -d "$APP_HOME/logs" ]]; then
  mkdir ${APP_HOME}/logs
fi

if [[ ! -f "$APP_HOME/$APP_NAME.jar" ]]; then
  echo "---------------------------------"
  echo "$APP_NAME不存在>>>>>"
  echo "---------------------------------"
  exit 1
fi

#实时日志
LOG_PATH=${APP_HOME}/logs/${APP_NAME}.out

#GC日志信息
GC_LOG_PATH=${APP_HOME}/logs/gc-${APP_NAME}-${LOG_DATE}.log

#JMX监控参数
JMX="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=1091 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"

#JVM启动参数
JVM_OPTS="-Dname=$APP_NAME -Djeesuite.configcenter.profile=$ENV -Duser.timezone=Asia/Shanghai -Xms512M -Xmx512M -XX:PermSize=256M -XX:MaxPermSize=512M -XX:+HeapDumpOnOutOfMemoryError -XX:+PrintGCDateStamps -Xloggc:$GC_LOG_PATH -XX:+PrintGCDetails -XX:NewRatio=1 -XX:SurvivorRatio=30 -XX:+UseParallelGC -XX:+UseParallelOldGC"

APP_FILE=${APP_NAME}.jar
pid=0

#获取进程号
getPid() {
    pid=`ps -ef |grep ${APP_FILE} |grep -v grep |awk '{print $2}'`
}

#启动服务
start() {
  getPid
  if [[ ! -n "$pid" ]]; then
    JAVA_CMD="nohup java -jar $JVM_OPTS ${APP_HOME}/${APP_NAME}.jar >> $LOG_PATH 2>&1 &"
    echo "---------------------------------"
    su  ${RUNNING_USER} -c "$JAVA_CMD"
    echo "启动中>>>>>>>"
    echo "---------------------------------"
    sleep 2s
    #tail -f ${LOG_PATH}
  else
      echo "$APP_NAME is running PID: $pid"
  fi
}

#停止服务
stop() {
    getPid
    if [[ ! -n "$pid" ]]; then
     echo "$APP_NAME not running"
    else
      echo "$APP_NAME stop..."
      kill -9 ${pid}
    fi
}

#重启服务
restart() {
    stop
    sleep 1s
    start
}

#服务状态
status() {
   getPid
   if [[ ! -n "$pid" ]]; then
     echo "$APP_NAME not running"
   else
     echo "$APP_NAME running PID: $pid"
   fi
}

#查看最近100行日志
hundred() {
   LOG_PATH=${APP_HOME}/logs/${APP_NAME}.out
   tail -100f ${LOG_PATH}
}

case $1 in
	start)
		start
		;;
	stop)
		stop
		;;
	restart)
		restart
		;;
	status)
		status
		;;
	log)
		hundred
		;;
	*)
	echo "$0: Usage: $0 {start|stop|restart|status|log}"
	exit 1
	;;
esac

5、系统服务启动,自带定义一个系统服务来启动,我使用的是这种

1、创建一个系统服务文件
vi /etc/systemd/system/demo.service

2、输入下面信息

[Unit]

# 服务名称
Description=demo Service

# 在什么服务启动后启动
After=syslog.target

[Service]

# jar包启动命令,这里java要写绝对路径
ExecStart=/usr/local/jdk1.8.0_291/bin/java -jar /usr/local/java/demo.jar 

[Install]

# 设置服务安装,可以设置多个,用逗号隔开
WantedBy=multi-user.target

3、保存
4、执行命令
systemctl start demo    # 启动
systemctl stop demo    # 关闭
systemctl status demo    # 服务当前状态
systemctl enable demo    # 设置服务开机启动
systemctl disable demo    # 关闭服务开机启动
systemctl restart demo    # 重启服务

### 回答1: 可以使用以下命令来查找jar包位置: 1. 使用find命令查找: ``` find / -name "*.jar" ``` 这个命令会在根目录下查找所有后缀为.jar的文件,并输出它们的路径。 2. 使用locate命令查找: ``` locate *.jar ``` 这个命令会在系统的数据库中查找所有后缀为.jar的文件,并输出它们的路径。需要注意的是,如果你刚刚安装了一个新的jar包,可能需要使用updatedb命令更新数据库。 3. 使用whereis命令查找: ``` whereis jar ``` 这个命令会查找系统中所有与jar相关的文件,并输出它们的路径。 4. 使用which命令查找: ``` which jar ``` 这个命令会查找系统中所有与jar相关的可执行文件,并输出它们的路径。 以上是几种常用的查找jar包位置的方法,可以根据自己的需要选择合适的方法。 ### 回答2: Linux是一款开源的操作系统,有着强大的命令行工具,可以方便的查找jar包的位置。本文将介绍两种常用的方法。 第一种方法是用find命令查找。find命令是Linux下用于查找文件的命令,可以在系统中查找指定名称、类型、大小、修改时间等属性的文件。查找jar包的位置可以按照以下方法进行: 1. 打开终端,进入需要查找的目录或者在根目录下执行命令。 2. 执行以下命令: ``` find . -name "*.jar" ``` 其中"."表示当前目录,"*.jar"表示查找以.jar结尾的文件名。命令执行后,系统会遍历当前目录及其子目录并输出找到的所有jar包的位置。可以根据输出信息找到对应的jar包位置。 第二种方法是用whereis命令查找。whereis命令是Linux下用于查找二进制程序、源码文件和man手册页等文件的命令。查找jar包位置可以按照以下方法进行: 1. 打开终端。 2. 执行以下命令: ``` whereis 文件名 ``` 其中"文件名"表示需要查找的jar包名称,如: ``` whereis myproject.jar ``` 执行命令后,系统会输出所有有关该文件的信息,包括文件位置和man手册位置等。 以上就是利用两种方法在Linux下查找jar包位置的简单介绍。无论是使用find命令还是whereis命令,在终端下输入相应命令即可查找到jar包的位置。 ### 回答3: 在Linux系统中,查找一个jar包的位置通常可以通过以下几种方法: 1. 使用find命令 在终端中运行以下命令: ```bash find / -name "*.jar" ``` 该命令会在整个文件系统中搜索所有.jar文件,并列出它们的位置。由于搜索整个文件系统可能需要很长时间,因此您可以替换“/”为特定目录,例如“/usr/share/java/”,该目录通常存放Java包文件。 2. 使用locate命令 在终端中运行以下命令: ```bash locate *.jar ``` 该命令会使用名称数据库快速定位.jar文件,不需要搜索整个文件系统。但是需要注意的是,在第一次运行该命令之前,您需要更新名称数据库。可以使用以下命令更新: ```bash sudo updatedb ``` 3. 使用whereis命令 在终端中运行以下命令: ```bash whereis jar ``` 此命令可以找到可执行文件、源代码和帮助文档所在的位置。如果您的系统中安装了Java开发工具包(JDK),则whereis命令通常会指向/usr/bin/jar文件。 4. 使用which命令 在终端中运行以下命令: ```bash which jar ``` 此命令可以定位可执行文件所在路径,如果您的系统中安装了Java开发工具包(JDK),则which命令也通常会指向/usr/bin/jar文件。 以上是Linux系统中查找jar包位置的几种方法,您可以按照自己的需要选择其中一种方法进行使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值