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文件中手动添加一些命令或脚本,以便在系统启动时执行它们。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/159210.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《Deep Residual Learning for Image Recognition》阅读笔记

论文标题 《Deep Residual Learning for Image Recognition》 撑起CV界半边天的论文Residual :主要思想,残差。 作者 何恺明,超级大佬。微软亚研院属实是人才辈出的地方。 初读 摘要 提问题: 更深层次的神经网络更难训练。 …

PHP基础语法(上)

目录 前言 一、基础语法 1.1 标记 1.2 输出语句 1.2.1 echo 1.2.2 print 1.3 注释 1.3.1 单行注释 1.3.2 多行注释 1.4 标识符 1.5 关键字 二、数据与运算 2.1 常量 2.1.1 常量的定义和使用 2.1.2 预定义常量 2.2 变量 2.2.1 变量的赋值 2.2.2 超全局变量 2.3 数据类型 2.3.1 …

Nginx:反向代理(示意图+配置)

示意图: 反向代理 反向代理(Reverse Proxy)是代理服务器的一种,它代表服务器接收客户端的请求,并将这些请求转发到适当的服务器。当请求在后端服务器完成之后,反向代理搜集请求的响应并将其传输给客户端。…

Tableau:商业智能(BI)工具

Tableau入门 1、Tableau概述2、Tableau Desktop2.1、初识Tableau Desktop2.2、Tableau工作区2.3、数据窗格与分析窗格2.4、功能区和标记卡2.4.1、列和行功能区2.4.2、标记卡2.4.3、筛选器功能区2.4.4、页面功能区2.4.5、附加功能区、图例、控件 3、Tableau视图4、Tableau工作簿…

LeetCode讲解篇之198. 打家劫舍

LeetCode讲解篇之198. 打家劫舍 文章目录 LeetCode讲解篇之198. 打家劫舍题目描述题解思路题解代码 题目描述 题解思路 该问题可以通过递推来完成 递推公式: 前n间房的最大金额 max(前n-1间房的最大金额, 前n-2间房的最大金额第n-1间房的最…

Hadoop2.0探讨

文章目录 8. Hadoop 再探讨8.1 Hadoop的优化与发展8.2 HDFS 的FA和Federation(Hadoop2.0新特性)8.2.1 HDFS HA8.2.2 HDFS Federation 8.3 YARN8.3.1 MapReduce1.0的缺陷8.3.2 Yarn设计思路8.3.3 Yarn体系结构8.3.4 Yarn工作流程8.3.5 Yarn框架和MapReduce1.0框架对比分析8.3.6 …

asp.net酒店餐饮管理系统VS开发sqlserver数据库web结构c#编程Microsoft Visual Studio

一、源码特点 asp.net酒店餐饮管理系统是一套完善的web设计管理系统,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为vs2010,数据库为sqlserver2008,使用c#语言 开发 ASP.NE 酒店餐饮管理系统 二、功能…

AMD AFMF不但能用在游戏,也适用于视频

近期AMD发布了AMD Software Adrenalin Edition预览版驱动程序,增加了对平滑移动帧(AMD Fluid Motion Frames,AFMF)功能的支持,也就是AMD的“帧生成”技术,与DLSS 3类似,作为FidelityFX Super Re…

毅速丨模具3D打印材料有哪些选择

当前1.2709和CX是市面上最常用的3D打印模具钢材料,模具3D打印有没有更多的材料选择呢? 据了解,上海毅速推出的几款3D打印新材料正在被越来越多的行业所采用。如毅速的EM191S高性能高抛光不锈钢粉末,这款材料的抗开裂和耐腐蚀性能是…

LeetCode【240】搜索二维矩阵

题目&#xff1a; 思路&#xff1a; 1、单靠对角线元素无法判定位置 2、主要逐行进行二分 代码&#xff1a; public boolean searchMatrix(int[][] matrix, int target) {int rows matrix.length;int columns matrix[0].length;// 按行进行二分for (int i 0; i < rows…

与HTTP相关的各种概念

网络世界 网络世界中最重要的一个名词就是互联网&#xff08;Internet&#xff09;,它以TCP/IP协议族为基础&#xff0c;构建成了一望无际的信息传输网络。而我们通常所说的“上网”&#xff0c;主要就是访问互联网的一个子集——万维网&#xff08;World Wide Web&#xff09…

MDK自动生成带校验带SVN版本号的升级文件

MDK自动生成带校验带SVN版本号的升级文件 获取SVN版本信息 确保SVN安装了命令行工具&#xff0c;默认安装时不会安装命令行工具 编写一个模板头文件 svn_version.temp.h, 版本号格式为 1_0_0_SVN版本号 #ifndef __SVN_VERSION_H #define __SVN_VERSION_H#define SVN_REVISIO…

网络-HTTPS

文章目录 前言一、HTTPS简介优点SSL/TSL工作流程 加密1、对称加密2、非对称加密 二、使用HTTPS1.openSSL生成私钥&#xff08;1&#xff09;node服务端&#xff08;2&#xff09;nginx配置https服务&#xff08;前端&#xff09; nginx服务 总结 前言 Http 存在不安全、无状态…

[数据结构]——单链表超详细总结

带你走进链表的世界 目录&#xff1a;一、线性表的概念二、顺序表三、链表3.1 链表的概念3.2 链表的分类3.3 无头单向非循环链表的实现3.4 带头双向循环链表的实现 四、顺序表和链表的区别和联系 目录&#xff1a; 链表是个优秀的结构&#xff0c;没有容量概念&#xff0c;可以…

基于PHP的芒果销售交易平台

有需要请加文章底部Q哦 可远程调试 基于PHP的芒果销售交易平台 一 介绍 芒果销售交易平台基于原生PHP开发&#xff0c;数据库mysql&#xff0c;前端bootstrap。用户可注册登录&#xff0c;购物下单&#xff0c;评论等。管理员登录后台可对芒果&#xff0c;用户&#xff0c;订…

解决win10因为WSL问题无法正常启动docker

解决win10无法成功启动dockerdesktop因为WSL问题无法启动 问题起因解决方法 问题起因 因为需要在windows复现一个CVE漏洞&#xff0c;就需要安装在WIN10上装docker&#xff0c;但是在启动的时候出现下面报错。 然后查了一下是因为WSL的版本太低了。更新以后发现打开docker仍然…

【PyTorch2 之027】在 PyTorch 中的R-CNN、Fast R-CNN和 Faster R-CNN

一、说明 亮点&#xff1a;对象检测是计算机视觉中最重要的任务之一。在这篇文章中&#xff0c;我们将概述最有影响力的对象检测算法家族之一&#xff1a;R-CNN、Fast R-CNN 和 Faster R-CNN。我们将重点介绍它们中的每一个的主要新颖性和改进。 最后&#xff0c;我们将专注于 …

【SOA-KELM分类】基于海鸥算法优化核极限学习机分类研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

【C/C++数据结构 - 2】:稳定性与优化揭秘,揭开插入排序、希尔排序和快速排序的神秘面纱!

文章目录 排序的稳定性插入排序插入排序的优化 希尔排序快速排序 排序的稳定性 稳定排序&#xff1a;排序前2个相等的数在序列中的前后位置顺序和排序后它们2个的前后位置顺序相同。&#xff08;比如&#xff1a;冒泡、插入、基数、归并&#xff09; 非稳定排序&#xff1a;排…

商品API接口优秀案例 │ 国家电网办公物资电商化采购项目API解决方案

苏宁易购集团股份有限公司&#xff08;以下简称“苏宁”&#xff09;作为中国领先的O2O智慧零售商&#xff0c;在互联网、物联网、大数据盛行的时代&#xff0c;持续推进智慧零售和线上线下融合战略&#xff0c;全品类经营&#xff0c;全渠道运营&#xff0c;开放苏宁物流云、数…