当前位置: 首页 > 图灵资讯 > 技术篇> nohup java 进程号一直在变

nohup java 进程号一直在变

来源:图灵教育
时间:2023-11-28 15:01:48

如何实现“nohup java 流程号一直在变”1. 整体流程

在这项任务中,我们需要实现的目标是改变Java过程的过程编号。为了实现这一目标,我们可以遵循以下步骤:

步骤操作1.编写Java程序,该程序将继续输出程序号2。使用它nohup命令后台运行Java程序3。检查Java程序的进程号是否在变化。4.如果进程号没有变化,重启Java程序

接下来,我们将详细说明每一步需要做什么,并提供相应的代码和注释。

2. 操作步骤2.1 编写Java程序

首先,我们需要编写一个Java程序,它将继续输出程序号。以下是一个示例程序:

public class ProcessIdPrinter {    public static void main(String[] args) {        while (true) {            System.out.println("当前流程号:" + ProcessHandle.current().pid());            try {                Thread.sleep(1000);            } catch (InterruptedException e) {                e.printStackTrace();            }        }    }}

使用上述代码ProcessHandle.current().pid()获取当前Java进程的进程号,并每隔一秒打印一次。

2.2 Java程序使用nohup命令后台运行

使用nohup该命令可以在不受终端关闭影响的情况下在后台运行该程序。以下是运行Java程序的命令:

nohup java ProcessIdPrinter > /dev/null 2>&1 &

上面的命令将ProcessIdPrinter类输出重定向到/dev/null,并将标准错误输出重定向/dev/null,最后使用&符号将程序放入后台。

2.3 检查过程号是否发生变化

为了检查Java程序的过程号是否在变化,我们可以使用它ps命令获取目前正在运行的Java进程号,并与之前保存的进程号进行比较。以下是检查过程号是否正在变化的代码:

#!/bin/bash# 获取过程号old_pid=$(ps -ef | grep "java ProcessIdPrinter" | grep -v grep | awk '{print $2}')# 检查过程号是否在变化whilele truedo    new_pid=$(ps -ef | grep "java ProcessIdPrinter" | grep -v grep | awk '{print $2}')        if [[ "$old_pid" == "$new_pid" ]]    then        echo "流程号没有变化,重启Java程序"        kill -9 $new_pid        nohup java ProcessIdPrinter > /dev/null 2>&1 &    else        echo "流程号发生了变化"        old_pid=$new_pid    fi        sleep 5done

使用上述代码ps -ef命令获取所有正在运行的过程,然后使用grep命令过滤出我们的Java程序进程,然后使用它awk命令提取流程号。然后,使用无限循环连续检查流程号是否发生变化。如果流程号没有变化,重启Java程序。

3. 运行流程图
journey    title 如何实现“nohup java 进程号一直在变”    section 编写Java程序        编写Java程序,该程序将继续输出程序号    section Java程序使用nohup命令后台运行        使用nohup命令将Java程序放在后台运行    section 检查过程号是否发生变化        不断检查Java程序的进程号是否发生变化。如果没有变化,重启Java程序
4. 时间计划图
gantt    dateFormat  YYYY-MM-DD    title 时间计划图    section 编写Java程序        完成时间  :2021-01-01, 2d    section Java程序使用nohup命令后台运行        完成时间  :2021-01-03, 1d

上一篇:

nas实现java

下一篇:

shell 执行java 函数