精华内容
下载资源
问答
  • Linux启动jar包,这是一个非常基础的技能。但是涉及的环节也比较多,也容易出错。一路踩坑过来,jar包无法正确启动,原因主要是集中在三个方面:1.Java环境问题如何解决已经在上一篇文章里写的很详细了。2.代码配置...

    Linux下启动jar包,这是一个非常基础的技能。但是涉及的环节也比较多,也容易出错。一路踩坑过来,jar包无法正确启动,原因主要是集中在三个方面:

    1.Java环境问题

    如何解决已经在上一篇文章里写的很详细了。

    2.代码配置问题

    3.Linux权限问题

    主要是谈谈第二点和第三点怎么解决

    对于代码配置问题,首先要认识到开发环境和正式环境是有区别的,开发环境一般是windows或者MAC,服务器一般都是Linux。开发环境还有开发工具,一个jar包能在开发工具里启动正常,不一定脱离了开发工具就能启动。所以一个程序写好了,不要想当然的觉得扔到服务器上也能正常运行。

    在springboot中首先就要配置好Spring Boot Maven plugin,这样你才能打成一个正常的jar包。不会抛出no main manifest attribute, in xxxx-0.0.1-SNAPSHOT.jar这样的异常。

    在pom.xml中配置,代码如下:

    org.springframework.boot

    spring-boot-maven-plugin

    还有,SpringBoot工程一般是作为一个可独立运行的项目,不是作为某个项目的依赖,如果要将一个Springboot项目作为另外一个项目的依赖,需要另外配置,在此不叙述。

    设置好maven插件之后,一般就可以正常启动项目。但是如果是使用nohup命令,还有可能遇到这种情况:

    1240df36bd204db8ec862e1654f31fbe.png

    看起来好像项目已经启动了,还返回了PID,实际上报了一个ignoring input and appending output to 'nohup.out'的错误,这种情况下去查看这个项目的进程会发现实际上是没有的,也就是说这个项目并没有正常启动。

    出现这种情况的原因是对nohup.out日志没有写入权限,因为你执行nphup命令就会产生日志,日志默认就输出到nohup.out。而实际上给nohup.out赋权限也没解决的了。经过查找资料,最好的解决办法就是让输出的日志输出到一个有权限的地方,即不要简简单单的执行nohup xxx,而是 nohup  xxx>/dev/null 2>&1 去执行,xxx就是你需要执行的脚本,样例如下:

    nohup java -jar chapter063-0.0.1-SNAPSHOT.jar>/dev/null 2>&1 --server.port=8080 &

    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

    以上就是我需要执行的脚本

    以上三个问题就是最近在服务器启动jar包遇到的问题整理以及解决办法。

    执行启动命令:

    8d61a3fd72197c89a00882eacd3a28de.png

    再查看进程:

    13bf6c2a54394f4bbe9dde6bf5be2ef3.png

    完美。

    展开全文
  • /bin/sh# 该脚本为Linux启动java程序的脚本## author: luandy# date: 2021/1/15## 特别注意:# 该脚本使用系统kill命令来强制终止指定的java程序进程。# 所以在杀死进程前,可能会造成数据丢失或数据不完整。如果...

    #!/bin/sh# 该脚本为Linux下启动java程序的脚本## author: luandy# date: 2021/1/15## 特别注意:# 该脚本使用系统kill命令来强制终止指定的java程序进程。# 所以在杀死进程前,可能会造成数据丢失或数据不完整。如果必须要考虑到这类情况,则需要改写此脚本,### 根据实际情况来修改以下配置信息 ################################### JAVA应用程序的名称APP_NAME=uid-consumer# JAVA应用程序端口号SERVER_PORT=9999# jar包存放路径JAR_PATH='/app/uid-consumer'# jar包名称JAR_NAME=uid-consumer-1.1.0-SNAPSHOT.jar# PID 代表是PID文件JAR_PID=$JAR_NAME\.pid# 日志输出文件LOG_FILE=logs# java虚拟机启动参数JAVA_OPTS="-Xms512m -Xmx512m -XX:MetaspaceSize=512m -XX:MaxMetaspaceSize=1024m -XX:ParallelGCThreads=4 -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=utf-8"# 根据实际情况来修改以上配置信息 ################################### 检查程序是否处于运行状态is_exist() { # 查询出应用服务的进程id,grep -v 是反向查询的意思,查找除了grep操作的run.jar的进程之外的所有进程 pid=`ps -ef|grep $JAR_NAME|grep -v grep|awk '{print $2}' ` # [ ]表示条件测试。注意这里的空格很重要。要注意在'['后面和']'前面都必须要有空格 # [ -z STRING ] 如果STRING的长度为零则返回为真,即空是真 # 如果不存在返回0,存在返回1 if [ -z "${pid}" ]; then return 0 else return 1 fi}# ######### Shell脚本中$0、$?、$!、$$、$*、$#、$@等的说明 ########## $$ Shell本身的PID(ProcessID,即脚本运行的当前 进程ID号)# $! Shell最后运行的后台Process的PID(后台运行的最后一个进程的 进程ID号)# $? 最后运行的命令的结束代码(返回值)即执行上一个指令的返回值 (显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误)# $- 显示shell使用的当前选项,与set命令功能相同# $* 所有参数列表。如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数,此选项参数可超过9个。# $@ 所有参数列表。如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。# $# 添加到Shell的参数个数# $0 Shell本身的文件名# $1~$n 添加到Shell的各参数值。$1是第1参数、$2是第2参数…。# 服务启动方法start() { is_exist if [ $? -eq "1" ]; then echo "$APP_NAME is already running pid is ${pid}" else # jar服务启动脚本 nohup java $JAVA_OPTS -Xloggc:$LOG_FILE/gc/gclog.log -XX:HeapDumpPath=$LOG_FILE/gc/HeapDump.hprof -jar $JAR_PATH/$JAR_NAME >./$LOG_FILE/run.log 2>&1 & echo $! > $JAR_PID echo "start $APP_NAME successed pid is $! " tail -1000f $LOG_FILE/run.log fi }# 服务停止方法stop() { # is_exist pidf=$(cat $JAR_PID) # echo "$pidf" echo "pid = $pidf begin kill $pidf" kill $pidf rm -rf $JAR_PID sleep 2 # 判断服务进程是否存在 is_exist if [ $? -eq "1" ]; then echo "pid = $pid begin kill -9 $pid" kill -9 $pid sleep 2 echo "$APP_NAME process stopped!" else echo "$APP_NAME is not running!" fi }# 服务运行状态查看方法status() { is_exist if [ $? -eq "1" ]; then echo "$APP_NAME is running,pid is ${pid}" else echo "$APP_NAME is not running!" fi}# 重启服务方法restart() { # 调用服务停止命令 stop # 调用服务启动命令 start}# 帮助说明,用于提示输入参数信息usage() { echo "Usage: sh run-service.sh [ start | stop | restart | status ]" exit 1}#################################### 读取脚本的第一个参数($1),进行判断# 参数取值范围:{ start | stop | restart | status }# 如参数不在指定范围之内,则打印帮助信息####################################根据输入参数,选择执行对应方法,不输入则执行使用说明case "$1" in 'start') start ;; 'stop') stop ;; 'restart') restart ;; 'status') status ;; *) usage ;;esacexit 0

    展开全文
  • 创建xxx.service https://blog.csdn.net/y799924439/article/details/80230783 指定配置文件 配置文件路径在前,jar包路径在后

    创建xxx.service

    https://blog.csdn.net/y799924439/article/details/80230783

    指定配置文件

    配置文件路径在前,jar包路径在后
    在这里插入图片描述

    展开全文
  • 配置文件application.yml放在同级目录,不使用外部配置文件就能启动 ![图片说明](https://img-ask.csdn.net/upload/202001/07/1578360582_516826.png) jdk看了是1.8的 ![图片说明]...
  • 在/lib/systemd/system目录下创建一个脚本文件testjar.service vim /lib/systemd/system/testjar.service #表示基础信息 [Unit] #描述 Description=testjar Service #在哪个服务之后启动 After=syslog.target ...

    systemctl管理服务启动、停止、开机启动

    • 在/lib/systemd/system目录下创建一个脚本文件testjar.service
    vim /lib/systemd/system/testjar.service
    
    #表示基础信息
    [Unit]
    #描述
    Description=testjar Service
    #在哪个服务之后启动
    After=syslog.target network.target remote-fs.target nss-lookup.target
    
    #表示服务信息
    [Service]
    PIDFile=/var/run/testjar.pid
    User=workspace
    Group=workspace
    WorkingDirectory=/home/workspace/testjar
    ExecStart=/usr/local/java/jdk1.8.0_221/bin/java -jar /home/workspace/testjar/testjar.jar
    ExecReload=/bin/kill -s HUP $MAINPID
    ExecStop=/bin/kill -s QUIT $MAINPID
    PrivateTmp=true
    
    #安装相关信息
    [Install]
    WantedBy=multi-user.target
    
    • 创建软链接

    软链接是为系统初始化时自动启动服务

    ln -s /lib/systemd/system/testjar.service /etc/systemd/system/multi-user.target.wants/testjar.service

    • 刷新配置

    systemctl daemon-reload

    • 启动、重启、停止

    启动redis

    systemctl start testjar

    重启redis

    systemctl restart testjar

    停止redis

    systemctl stop testjar

    • 开机自启动

    redis服务加入开机启动

    systemctl enable testjar

    禁止开机启动

    systemctl disable testjar

    展开全文
  • nohup java -jar xxx.jar --spring.profiles.active=DEV > xxx-logs.txt &
  • nohup java -jar -Dspring.config.location=/绝对路径/application.properties /xxx/xxx.jar > /xxx/xxx.log &
  • 参考:https://blog.csdn.net/u011752272/article/details/78560715注:本篇和原文略有不同1程序的目录结构目录结构1.1 jdk使用1.81.2 src目录下存放类文件和log4j的配置文件1.3 lib目录存放jar包1.4 log目录存放日志...
  • springboot启动读取外部配置文件有时候项目打包成一个jar 或者war ,通过java -jar 命令运行springboot 项目,因为springboot 项目有自己的application.properties 配置文件,但是我们打完包之后,它也会打到包里边,...
  • 1.简单的jar包在linux上跑使用java -jar 命令执行。但通常这不满足项目需要。尤其是配置文件修改。 2.项目结构。一般是lib文件夹,config文件夹,logs文件夹。将config中的配置文件需要加载到项目的classpath中。...
  • 要求:每次启动前,杀掉原来的进程。 脚本如下: #!/bin/bash #jar包文件路径及名称(目录按照各自配置) APP_NAME=/usr/local/jar/demo.jar ...#判断jar包文件是否存在,如果存在启动jar包,并时时查看启动日
  • 第二步 ,编辑你指定的 .jar 文件 编辑之前请先备份 cp xxx.jar xxx-1.2.jar 输入编辑命令 vim xxx.jar 第三步,找到你要编辑的文件 输入命令进入vi模式 (esc :) ./xxxx(搜索你指定的文件) 直接回车找到你的...
  • 1.切换目录到/etc/rc.d/init.d,并编辑文件 cd /etc/rc.d/init.d vim test 2.编写启动脚本内容 #!/bin/bash #chkconfig: 2345 10 90 #description: test service .... LANG=en_US.UTF-8 #设置编码utf-8 export ...
  • #jar文件路径及名称(目录按照各自配置) APP_NAME=/usr/local/java/you-jarname.jar #日志文件路径及名称(目录按照各自配置) LOG_FILE=/usr/local/java/you-log.log #查询进程,并杀掉当前jar/java程序 pid=...
  • linux centos7 部署spring boot项目 打jar配置成系统服务启动 本地项目打jar包,上传至服务器. 首先进入/etc/systemd/system(必须是centos7以上版本才有这个目录)文件夹新建一个.service文件我的是取名为admin 写入...
  • 文章目录案例1:简单的启动方式案例二:带配置文件时 案例1:简单的启动方式 注意:jar 包与shell脚本文件必须在同一目录下 #!/bin/bash APP_NAME=/boot/soc-statistic-service-0.0.1-SNAPSHOT.jar usage() { ...
  • linux下将jar文件安装成服务,就能实现机器重启自动运行,事实上就是配置一个启动脚本,然后系统的systemctl就启动我们配置的服务了。 示例:/etc/systemd/system/server.service [Unit] Description=server ...
  • 为了方便Linux服务器上的jar包方便发布,编写一个简单的Shell脚本进行启动,这个较为简单,可以自行优化。 完整脚本代码 #!/bin/sh #jar文件路径及名称(目录按照各自配置) TOM_HOME=jar包名称 #查询进程,并杀...
  • Linux设置项目开机启动 文章为自己工作过程中学习记录,如有错误,请指正 很多时候,服务器运行了多个项目,一旦发生意外情况服务停止了,就需要我们一个一个去启动,既麻烦又费时间,下面介绍配置项目自动启动方法...
  • 背景: 首先因为项目需求需要打Jar在...但是有一点那就是我们在linux环境中都是需要后台启动运行,所以采用下面的shell脚本来执行。 具体的运行如下: [root@edgeprod ~]# nohup ./run.sh & 然后查看日志...
  • Linux编辑启动停止重启springboot jar包脚本 springboot的配置文件中,配置文件的名字都有各自的意义跟用途 dev 开发环境 prod 生产环境(默认) test 测试环境 加载指定配置文件 --spring....
  • 每天都要更新微服务, 而且可能还要退回到上一个jar包,就写了个python脚本, 一键启动jar包,括杀死进程,启动参数, 只需设置# sDir = 程序目录名, sName = jar包前缀, ymlName = 配置文件, out = 日志, sDtVer =文件...
  • 前言:新建了一个java项目,现在需要将该项目打包成一个可运行的程序,并且编写start.bat和start.sh在windows下和Linux下都可运行,项目主要是一个根据文件日期自动创建层级目录文件夹(文件夹根据日期命名),然后将...
  • 前言springboot的配置文件中,配置文件的名字都有各自的意义跟用途dev 开发环境prod 生产环境(默认)test 测试环境加载指定配置文件 --spring.profiles.active=prodspringboot加载jar包的方式有/...
  • linux下springboot项目 使用rc.local自启动时不加载自己指定的配置文件 - 项目文件全部在/biz目录下 ``` 脚本名称restart_boot.sh #参数配置 BaseDir=/biz JarName=$BaseDir/VisitorSystem.jar ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 420
精华内容 168
关键字:

linux启动jar配置文件

linux 订阅