linux查看java进程路径_Linux 启动、停止、重启jar包脚本;查看java进程执行文件所在目录/具体位置(多文件夹同名jar包)...

本文介绍了一种通用的Shell脚本,用于启动、停止、重启及查询Java应用程序的状态。该脚本支持多种运行模式,并提供了实用的日志管理和进程查找技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文件名称

startOrStropJar.sh

脚本

#!/bin/bash

#这里可替换为你自己的执行程序,其他代码无需更改

APP_NAME=xxxxxx.jar

#使用说明,用来提示输入参数

usage() {echo "Usage: sh startOrStropJar.sh [start|stop|restart|status]"exit1}

#检查程序是否在运行

is_exist(){

pid=`ps -ef|grep $APP_NAME|grep -v grep|awk '{print $2}'`

#如果不存在返回1,存在返回0if [ -z "${pid}" ]; thenreturn1

elsereturn0

fi}

#启动方法

start(){

is_existif [ $? -eq 0 ]; then

echo "${APP_NAME} is already running. pid=${pid}"

else

rmnohup.out

nohup java-jar ${APP_NAME} --spring.profiles.active=[dev/test/prod] 2>&1 &

fi}

#停止方法

stop(){

is_existif [ $? -eq "0" ]; then

kill -9$pidelse

echo "${APP_NAME} is not running"

fi}

#输出运行状态

status(){

is_existif [ $? -eq "0" ]; then

echo "${APP_NAME} is running. Pid is ${pid}"

else

echo "${APP_NAME} is NOT running."

fi}

#重启

restart(){

stopsleep 5start

}

#根据输入参数,选择执行对应方法,不输入则执行使用说明case "$1" in

"start")

start

;;"stop")

stop

;;"status")

status

;;"restart")

restart

;;*)

usage

;;esac

* 红色部分

--spring.profiles.active=[dev/test/prod]需要指定为项目自身配置 如:--spring.profiles.active=mytest

# 启动/停止/重启sh startOrStropJar.sh start/stop/restart

备注:

war包需要部署到容器中,运行jar包主要有以下四种方式。

一、java -jar XXX.jar

这是最基本的jar包执行方式,但是当我们用ctrl+c中断或者关闭窗口时,程序也会中断执行。

二、java -jar XXX.jar &

&代表在后台运行,使用ctrl+c不会中断程序的运行,但是关闭窗口会中断程序的运行。

三、nohup java -jar XXX.jar &

使用这种方式运行的程序日志会输出到当前目录下的nohup.out文件,使用ctrl+c中断或者关闭窗口都不会中断程序的执行。

四、nohup java -jar XXX.jar >test.log &

日志输出到test.log文件。每次重启覆盖原有日志,追加日志 使用 >>test.log

查看java进程执行文件所在目录/具体位置(多文件夹同名jar包)

方法1.找出PID去/proc文件夹找对应PID的exe、cwd目录位置

查看java进程执行文件所在目录/具体位置(多文件夹同名jar包)

ps -ef | grep xxx 找出进程ID

Linux 在启动一个进程的时候,系统会在 /proc 下创建一个以 PID 命名的进程信息的文件夹。

查看方式:ll /proc/PID 或 ls -l /proc/PID

cwd 符号链接的是进程运行目录;

exe 符号链接的是执行程序的绝对路径;

cmdline:程序运行时输入的命令

方法2.使用fuser

首先要进入部署服务的目录,然后可以使用fuser找出进程。

如: fuser none.jar

若启动的是该目录下文件,则会列出详细目录

结果:/home/xxx/none.jar :    1234m(PID)

使用文件或文件结构识别进程

补充说明

fuser命令 用于报告进程使用的文件和网络套接字。fuser命令列出了本地进程的进程号,那些本地进程使用file,参数指定的本地或远程文件。对于阻塞特别设备,此命令列出了使用该设备上任何文件的进程。

每个进程号后面都跟随一个字母,该字母指示进程如何使用文件。

c:指示进程的工作目录。

e:指示该文件为进程的可执行文件(即进程由该文件拉起)。

f:指示该文件被进程打开,默认情况下f字符不显示。

F:指示该文件被进程打开进行写入,默认情况下F字符不显示。

r:指示该目录为进程的根目录。

m:指示进程使用该文件进行内存映射,抑或该文件为共享库文件,被进程映射进内存。

语法

fuser(选项)(参数)

选项

-a:显示命令行中指定的所有文件;

-k:杀死访问指定文件的所有进程;

-i:杀死进程前需要用户进行确认;

-l:列出所有已知信号名;

-m:指定一个被加载的文件系统或一个被加载的块设备;

-n:选择不同的名称空间;

-u:在每个进程后显示所属的用户名。

参数

文件:可以是文件名或者TCP、UDP端口号。

实例

要列出使用/etc/passwd文件的本地进程的进程号,请输入:

fuser /etc/passwd

要列出使用/etc/filesystems文件的进程的进程号和用户登录名,请输入:

fuser -u /etc/filesystems

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值