当前位置: 首页 > news >正文

centos 里面的service自启动app.jar,出现两个java进程,app是同一个端口

当使用jps -lv查看java虚拟机进程

app.jar启动后,居然出现两个启动进程,而且他们的端口都一样,同一端口,是不允许启动两个相同app的。

使用进程ps查看进程工具

#ps  -aux

参数说明:

a: 显示跟当前终端关联的所有进程

u: 基于用户的格式显示(U: 显示某用户ID所有的进程)

x: 显示所有进程,不以终端机来区分

发现921是/usr/bin/rhsmcertd根本不是java进程,或者根本没有对应的进程。

难道是jps -lv查询的java进程错误?

卸载订阅管理器 RHSMCERTD服务 rhsmcertd服务,

即Red Hat Subscription Manager CERTification Daemon systemctl stop rhsmcertd.service

# 停止订阅服务 systemctl disable rhsmcertd.service

# 取消订阅服务开机启动 yum remove subscription-manager

jps命令简介

jps(Java Virtual Machine Process Status Tool)是JDK提供的一个可以列出正在运行的Java虚拟机的进程信息的命令行工具,它可以显示Java虚拟机进程的执行主类(Main Class,main()函数所在的类)名称、本地虚拟机唯一ID(LVMID,Local Virtual Machine Identifier)等信息。另外,jps命令只能显示它有访问权限的Java进程的信息。

虽然jps命令的功能比较单一,但它使用的频率却很高。对于本地虚拟机来说,本地虚拟机唯一ID和操作系统的进程ID(PID,Process Identifier)是一致的,如果同时启动多个Java虚拟机进程,无法根据进程名称确定某个进程,我们就是使用jps命令显示主类名称的功能区分出来。

查看java进程

#ps  -ef|grep java

查看端口

#netstat  -anop | grep 80

jps命令参数

命令语法:

jps [-q] [-mlvV] [hostid]

jps [-help]

命令参数说明:

-q:不显示主类名称、JAR文件名和传递给主方法的参数,只显示本地虚拟机唯一ID。

-mlvV:我们可以指定这些参数的任意组合。

-m:显示Java虚拟机启动时传递给main()方法的参数。

-l:显示主类的完整包名,如果进程执行的是JAR文件,也会显示JAR文件的完整路径。

-v:显示Java虚拟机启动时传递的JVM参数。

-V:不显示主类名称、JAR文件名和传递给主方法的参数,只显示本地虚拟机唯一ID。

hostid:指定的远程主机,可以是ip地址和域名, 也可以指定具体协议,端口。如果不指定,则显示本机的Java虚拟机的进程信息。

-help:显示jps命令的帮助信息。

在没有指定任何参数的情况下,jps命令会显示每个Java虚拟机进程的本地虚拟机唯一ID,后面跟着主类名称或JAR文件名的简短形式。

命令显示格式:

LVMID [ [ classname | JARfilename | "Unknown"] [ arg* ] [ jvmarg* ] ]

其中所有输出都以空格分隔,所以当arg或jvmarg中包含空格的时候,有可以不好分辨,需要注意一下。

jps命令示例

显示本机的Java虚拟机进程:

# jps

15729 jar

92153 Jps

90267 Jstat

显示主类的完整包名或JAR文件名:

# jps -l

15729 one-more-1.0.0.RELEASE.jar

112054 sun.tools.jps.Jps

90267 sun.tools.jstat.Jstat

显示主类的完整包名或JAR文件名,并且显示JVM参数:

# jps -lv

15729 one-more-1.0.0.RELEASE.jar -Xmx1g -Xms1g -Xmn512m -XX:SurvivorRatio=4 -XX:MetaspaceSize=256m -XX:+UseG1GC

9043 sun.tools.jps.Jps -Denv.class.path=.:/usr/local/java/jdk1.8.0_251/lib:/usr/local/java/jdk1.8.0_251/jre/lib -Dapplication.home=/usr/local/java/jdk1.8.0_251 -Xms8m

90267 sun.tools.jstat.Jstat -Denv.class.path=.:/usr/local/java/jdk1.8.0_251/lib:/usr/local/java/jdk1.8.0_251/jre/lib -Dapplication.home=/usr/local/java/jdk1.8.0_251 -Xms8m

显示主类的完整包名或JAR文件名,并且显示传递给main()方法的参数:

# jps -lm

15729 one-more-1.0.0.RELEASE.jar

59014 sun.tools.jps.Jps -lm

90267 sun.tools.jstat.Jstat -gc 15729 1000

结尾

虽然jps命令已经推出很久并且使用频率很高,但它仍然是一个“实验性质的,并且没有技术支持的”(Experimental and Unsupported)工具,日后可能会被转正,也有可能在某个JDK版本中无声无息地消失。所以,且用且珍惜吧。

错误答案:

#jps -lv命令会列出所有正在运行的Java进程,包括那些由非标准用户或非标准账户启动的Java进程。

这些进程可能不会在标准的ps命令中列出,因为ps命令只显示由标准用户启动的进程。

#ps  -ef|grep  java  如果你只想查看由标准用户启动的Java进程

#ps  -aux          查看所有用户的进程

标准用户,非标准用户

#cat  /etc/passwd

/etc/passwd是一个文本文件,包含了系统中所有用户的基本信息。这个文件的每一行都表示一个用户的信息,包括用户ID、用户名、用户主目录、用户登录shell等。 以下是一个/etc/passwd文件的示例行:

username:x:1000:1000:username:/home/username:/bin/bash

在这个示例行中,username是用户名,1000是用户ID,1000是用户组ID,username是用户主目录,/bin/bash是用户的登录shell。 /etc/passwd文件的每一行都由7个字段组成,字段之间用冒号分隔。这7个字段的含义如下:

  1. 用户名:表示用户账户的名称。
  2. 用户ID:表示用户账户的唯一标识符。
  3. 用户组ID:表示用户所属的用户组的唯一标识符。
  4. 用户信息:表示用户的一些额外信息,例如用户全名、用户电话号码等。
  5. 用户主目录:表示用户账户的主目录。
  6. 用户登录shell:表示用户登录系统后的默认shell。

你可以使用cat /etc/passwd命令来查看/etc/passwd文件的内容。这个命令会将/etc/passwd文件的内容显示在终端中。

单独查看用户所属的标准

在CentOS系统中,你可以使用id命令来判断一个账户是否为标准账户。

标准账户的用户ID通常是1000或更低的数字,而非标准账户的用户ID通常是1000以上的数字。

#id  hc

#id  root

service服务为什么会启动两个java进程

之前我把Centos8的服务脚本存在/lib/systemd/system/里面,这个是错误的原因

#vi   /lib/systemd/system/yourscript.service

[Unit]

Description=Your Script

After=network.target

[Service]

Type=simple

ExecStart=nohup /home/yourscript.sh &

[Install]

WantedBy=multi-user.target

参数说明:

WantedBy是一个在systemd服务配置文件中常用的选项,用于指定服务何时启动或停止。

multi-user.target是一个目标,用于在系统启动后创建多用户模式。

graphical.target是一个目标,用于在系统启动后创建图形界面模式。

default.target 是一个目标上,然后按照systemd的启动顺序,先启动multi-user.target,再启动graphical.target,最后启动service_name服务。

WantedBy选项可以被设置为多个目标,用逗号分隔。例如,WantedBy=multi-user.target graphical.target,表示这个服务需要在multi-user.target和graphical.target这两个目标上运行。

正确答案:

yourscript.service应该放在/etc/systemd/system文件夹下,而不是/lib/systemd/system文件夹下。

服务运行的用户User及所属组Group都是root。

Type=daemon 必须是通常用于运行后台服务或者守护进程

这样配置问题解决。

#vi   /etc/systemd/system/yourscript.service

[Unit]

Description=Your Script

After=network.target

[Service]

Type=daemon

User=root

Group=root

ExecStart=nohup /home/yourscript.sh &

[Install]

WantedBy=multi-user.target

systemd的使用大幅提高了系统服务的运行效率, Systemd 可以管理所有系统资源,不同的资源统称为 Unit(单位),而unit的文件位置一般主要有三个目录:

/etc/systemd/system    系统管理员安装的单元, 优先级更高

/run/systemd/system    软件运行时生成的配置文件

/lib/systemd/system (/usr/lib/systemd/system)  系统或第三方软件安装时添加的配置文件。软件包安装的单元

这三个目录的配置文件优先级依次从高到低,如果同一选项三个地方都配置了,优先级高的会覆盖优先级低的。

参数说明

systemctl start yourscript.service (启动yourscript服务)

systemctl stop yourscript.service   或者  systemctl stop nginx (停止yourscript服务)

systemctl enable yourscript.service (设置开机自启动)

systemctl disable yourscript.service (停止开机自启动删除服务

systemctl status yourscript.service (查看服务当前状态)

systemctl restart yourscript.service (重新启动服务)

通过/etc/rc.local自启动app.jar

相对service方法,下面的方法配置比较简单,效果一样。

#vi  /etc/rc.local

内容如下:

/home/run_app.sh

#vi  /home/run_app.sh

内容如下:

#!/bin/bash

nohup /home/jdk-17/bin/java -server -Xmx512M -Xms512M -jar /home/app.jar --server.port=80 > /dev/null 2>&1 &

/etc/rc.local是Linux系统启动时运行的自定义脚本文件。它通常位于 /etc/rc.d 目录下,可以通过编辑该文件来添加需要自启动的脚本程序。 在系统启动过程中,rc.local文件会执行自定义的命令和脚本,这些命令会在系统启动后自动执行,并且运行它们的用户必须具有 root 权限。rc.local文件通常用于在系统启动时执行一些自定义的指令或者脚本,例如启动服务、设置环境变量、配置网络等。 在某些Linux发行版中,rc.local文件可能会被其他启动加载文件(例如 /etc/init.d/rc.local)所替代。在Ubuntu系统中,有两个rc.local文件,分别是/etc/rc.local和/etc/init.d/rc.local。在某些情况下,你可能需要在rc.local文件中手动添加一些命令或脚本,以便在系统启动时执行它们。

相关文章:

centos 里面的service自启动app.jar,出现两个java进程,app是同一个端口

当使用jps -lv查看java虚拟机进程 app.jar启动后,居然出现两个启动进程,而且他们的端口都一样,同一端口,是不允许启动两个相同app的。 使用进程ps查看进程工具 #ps -aux 参数说明: a: 显示跟当前终端关联的所有进…...

【算法|双指针系列No.7】leetcodeLCR 007. 三数之和

个人主页:兜里有颗棉花糖 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创 收录于专栏【手撕算法系列专栏】【LeetCode】 🍔本专栏旨在提高自己算法能力的同时,记录一下自己的学习过程,希望…...

ubuntu修改IP地址

参考:ubuntu修改配置IP地址和DNS的方法总结(4种)_ubuntu设置ip地址-CSDN博客 面对ubuntu18以上的版本,主要有两种界面:图形化界面和纯命令行界面。 图形化界面配置比较简单,命令行配置稍许复杂&#xff0c…...

java springboot 通过ConfigurationProperties给第三方bean注入属性

之前我们的文章 java boot将一组yml配置信息装配在一个对象中 讲过了 通过ConfigurationProperties将配置文件中的内容默认装配进属性类 但 这建立在 bean是自己定义的 如果 这是个第三方的类呢? 就比如 我们在 application 中写了一套数据源的加载规则 但需要用第…...

windows系统安装openssl并且转换证书格式

概述 碎碎念,如果你有MAC电脑,就别折腾了,直接用MAC电脑吧,不用安装直接用openssl 本文主要讲到了openssl的基本使用方法,开发环境为windows,开发工具为VS2019.本文主要是说明openssl如何使用,不介绍任何理…...

【GO】基础速成

简单介绍一下go好处 编译语言,可以提前报错同时又有python的一些优点,自带多线程 开始学习 学习网站:学习网站 值 包含:字符串、整型、浮点型、布尔型等等 字符串可以 进行拼接。 需要注意的是布尔型在go里面不自动转化为in…...

五子棋(C语言实现)

目录 构思 1、主程序 2、初始化 3、游戏菜单 4、打印棋盘 6、玩家下棋 7、判断输赢 8、功能整合 人机下棋 完整版: game.h game.c text.c 测试功能代码 构思 五子棋不必多介绍了,大家小时候都玩过哈。 我们要通过程序实现这个小游戏&…...

thymeleaf,bootstrap-fileinput 多文件上传

组件遍历上传 一、前端 <!DOCTYPE html> <html lang"zh" xmlns:th"http://www.thymeleaf.org" > <head><th:block th:include"include :: header(修改固定资产信息)" /><th:block th:include"include :: date…...

爬虫 | 基础模块了解

文章目录 &#x1f4da;http协议&#x1f4da;requests模块&#x1f4da;re模块&#x1f407; re.I 或 re.IGNORECASE&#x1f407;re.M或 re.MULTILINE&#x1f407;re.S 或 re.DOTALL&#x1f407; re.A 或 re.ASCII&#x1f407; re.X 或 re.VERBOSE&#x1f407;特殊字符类…...

CSS复习笔记

CSS 文章目录 CSS1.概念2.CSS 引入方式3.选择器基础选择器:标签选择器类选择器id 选择器通配符选择器 复合选择器:**后代选择器****子代选择器****并集选择器****交集选择器-了解****伪类选择器** 结构伪类选择器&#xff1a;**:nth-child&#xff08;公式&#xff09;**伪元素…...

编译linux的设备树

使用make dtbs命令时 在arch/arm 的目录Makefile文件中有 boot : arch/arm/boot prepare 和scripts是空的 在文件scripts/Kbuild.include中 变量build : -f $(srctree)/scripts/Makefile.build obj build变量虽然没有在arch/arm 的目录Makefile文件中定义&#xff0c;但…...

⛳ MyBatis 中 Mapper 接口工作原理实例解析

&#x1f38d;目录 ⛳ MyBatis 中 Mapper 接口工作原理实例解析&#x1f3a8; 一、Mapper 接口是怎么找到实现类的&#xff1f;&#x1f43e; 二、从一段代码看起&#x1f69c; 三、Mapper 接口&#x1f3ed; 四、Mapper 接口的动态代理类的生成&#x1f381; 五、总结 ⛳ MyBa…...

Android 音频可视化

Android音频可视化&#xff0c;指的是将音频的频率绘制到屏幕上&#xff0c;达到一种视觉效果&#xff0c;使播放或录制过程更加生动形象。 在Android进行视频可视化涉及的三个主要知识点,其中比较难以理解的傅里叶变换公式。 Android原生的Visualizer使用&#xff08;获取频…...

刷机与救砖避坑指南

提示&#xff1a;快速进行刷机和救砖学习理解 文章目录 一、刷机1.什么是刷机&#xff0c;需要进行那些准备&#xff1f;2.刷机1.解开bl&#xff08;bootloader&#xff09;锁2.刷入TWRP和Magsik3.刷入第三方ROM 二、救砖&#xff08;9008&#xff09;1.手机售后一键线刷包&…...

软件建模知识点

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、pandas是什么&#xff1f;二、使用步骤 1.引入库2.读入数据总结 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 例如&#xff1a;…...

WSL 配置 Linux

WSL 配置 Linux Windows 启动 Linux 子系统 控制面板 -> 程序和功能&#xff0c; 将 适用于 Linux 的 Windows 子系统 勾选。 安装 Terminal 在 Microsoft Store 市场上搜索 Terminal 安装 Windows Terminal。 安装 编译工具链 sudo apt update # 更新软件包 sudo apt i…...

VS Code:CMake配置

概述 在VSCode和编译器MinGW安装完毕后&#xff0c;要更高效率的进行C/C开发&#xff0c;采用CMake。CMake是一个开源、跨平台的编译、测试和打包工具&#xff0c;它使用比较简单的语言描述编译&#xff0c;安装的过程&#xff0c;输出Makefile或者project文件&#xff0c;再去…...

Flex 词法分析实验实现(电子科技大学编译技术Icoding实验)

Flex 词法分析 此为电子科技大学编译技术 实验1&#xff1a;词法分析 将具体实现中的三个文件和自己的实验报告一起上传才能通过 根据词法分析实验中给定的文法&#xff0c;利用 flex 设计一词法分析器&#xff0c;该分析器从标准输入读入源代码后&#xff0c;输出单词的类别编…...

设计模式——20. 解释器模式

1. 说明 解释器模式(Interpreter Pattern)是一种行为型设计模式,它用于定义一门语言的语法解析,并为该语言创建解释器。该模式将一个问题或领域表达成一个语言,然后提供一个解释器来解释这种语言中的表达式,以执行特定操作。 要点和组成部分: 抽象表达式(Abstract Ex…...

多输入多输出 | MATLAB实现CNN-BiLSTM-Attention卷积神经网络-双向长短期记忆网络结合SE注意力机制的多输入多输出预测

MATLAB实现CNN-BiLSTM-Attention卷积神经网络-双向长短期记忆网络结合SE注意力机制的多输入多输出预测 目录 MATLAB实现CNN-BiLSTM-Attention卷积神经网络-双向长短期记忆网络结合SE注意力机制的多输入多输出预测预测效果基本介绍程序设计往期精彩参考资料 预测效果 基本介绍 C…...

中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试

作者&#xff1a;Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位&#xff1a;中南大学地球科学与信息物理学院论文标题&#xff1a;BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接&#xff1a;https://arxiv.…...

java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别

UnsatisfiedLinkError 在对接硬件设备中&#xff0c;我们会遇到使用 java 调用 dll文件 的情况&#xff0c;此时大概率出现UnsatisfiedLinkError链接错误&#xff0c;原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用&#xff0c;结果 dll 未实现 JNI 协…...

【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)

服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...

CentOS下的分布式内存计算Spark环境部署

一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架&#xff0c;相比 MapReduce 具有以下核心优势&#xff1a; 内存计算&#xff1a;数据可常驻内存&#xff0c;迭代计算性能提升 10-100 倍&#xff08;文档段落&#xff1a;3-79…...

GitFlow 工作模式(详解)

今天再学项目的过程中遇到使用gitflow模式管理代码&#xff0c;因此进行学习并且发布关于gitflow的一些思考 Git与GitFlow模式 我们在写代码的时候通常会进行网上保存&#xff0c;无论是github还是gittee&#xff0c;都是一种基于git去保存代码的形式&#xff0c;这样保存代码…...

HubSpot推出与ChatGPT的深度集成引发兴奋与担忧

上周三&#xff0c;HubSpot宣布已构建与ChatGPT的深度集成&#xff0c;这一消息在HubSpot用户和营销技术观察者中引发了极大的兴奋&#xff0c;但同时也存在一些关于数据安全的担忧。 许多网络声音声称&#xff0c;这对SaaS应用程序和人工智能而言是一场范式转变。 但向任何技…...

OD 算法题 B卷【正整数到Excel编号之间的转换】

文章目录 正整数到Excel编号之间的转换 正整数到Excel编号之间的转换 excel的列编号是这样的&#xff1a;a b c … z aa ab ac… az ba bb bc…yz za zb zc …zz aaa aab aac…; 分别代表以下的编号1 2 3 … 26 27 28 29… 52 53 54 55… 676 677 678 679 … 702 703 704 705;…...

十九、【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建

【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建 前言准备工作第一部分:回顾 Django 内置的 `User` 模型第二部分:设计并创建 `Role` 和 `UserProfile` 模型第三部分:创建 Serializers第四部分:创建 ViewSets第五部分:注册 API 路由第六部分:后端初步测…...

6个月Python学习计划 Day 16 - 面向对象编程(OOP)基础

第三周 Day 3 &#x1f3af; 今日目标 理解类&#xff08;class&#xff09;和对象&#xff08;object&#xff09;的关系学会定义类的属性、方法和构造函数&#xff08;init&#xff09;掌握对象的创建与使用初识封装、继承和多态的基本概念&#xff08;预告&#xff09; &a…...

C++_哈希表

本篇文章是对C学习的哈希表部分的学习分享 相信一定会对你有所帮助~ 那咱们废话不多说&#xff0c;直接开始吧&#xff01; 一、基础概念 1. 哈希核心思想&#xff1a; 哈希函数的作用&#xff1a;通过此函数建立一个Key与存储位置之间的映射关系。理想目标&#xff1a;实现…...