首页 > 系统相关 >Linux下后台运行Java程序

Linux下后台运行Java程序

时间:2023-08-21 10:15:51浏览次数:36  
标签:Java jar 执行程序 程序 会话 test nohup Linux 后台

1、背景描述

用Java编写了一个程序(可执行的jar),需要在Linux中启动并持续运行

1.1、直接执行程序

image

直接执行程序后,在程序执行期间,无法在当前会话中再执行其他操作

1.2、直接执行程序后中断

image

直接执行程序后,按Ctrl+C中断;这时虽然可以在当前会话中执行其他操作,但是程序也结束运行了

1.3、直接执行程序后开启新会话

image

直接执行程序后,在新会话中不仅可以执行其他操作,而且旧会话中的程序也还在持续运行

image

但是,把旧会话关闭后,程序也随之结束了

2、解决方式

2.1、使用 &

  • & :表示程序在后台运行,这样就可以在程序的执行期间,还能在当前会话中执行其他操作

  • 使用格式:command &

image

注意:

在执行程序的命令后使用 > test.log 的作用,是为了将程序的输出信息从标准输出重定向到(test.log)文件中

单独使用 & , 只能实现在程序的执行期间,还能在当前会话中执行其他操作;但关闭当前会话,程序依然会自动结束

java -jar test_script.jar > test.log &

2.2、使用 nohup

  • nohup:英文全称 no hang up ,用于在系统中不挂断地运行命令,即使退出终端也不会影响程序的运行

  • 使用格式:nohup command

image

注意:

单独使用 nohup ,只能实现关闭当前会话后,程序依然能继续运行,但无法在当前会话中再执行其他操作;
强行使用Ctrl+C中断的话,这时虽然可以在当前会话中执行其他操作,但是程序也结束运行了

nohup 会默认将程序的输出信息从标准输出重定向到当前目录的nohup.out文件中;
因此可以不用额外使用 > test.log 将程序的输出信息从标准输出重定向到(test.log)文件中

nohup java -jar test_script.jar

2.3、结合使用 nohup 和 &

单独使用 & , 只能实现在程序的执行期间,还能在当前会话中执行其他操作;但关闭当前会话,程序依然会自动结束

单独使用 nohup ,只能实现关闭当前会话后,程序依然能继续运行,但无法在当前会话中再执行其他操作

结合使用 nohup 和 & ,能同时实现:在程序的执行期间,还能在当前会话中执行其他操作;关闭当前会话后,程序依然能继续运行

  • 结合使用格式:nohup command &

image

结合使用 nohup 和 & 后,无论是按回车,还是按Ctrl+C,或者是关闭当前会话,都不影响程序的运行

 nohup java -jar test_script.jar &

3、扩展知识

当结合使用 nohup 和 & 执行程序后,要么程序执行完毕后自动结束(如果程序有结束条件),要么手动结束该进程

  • ps -aux | grep 程序名:通过程序名找到进程信息

  • kill -9 进程ID:通过进程ID结束进程

image

标签:Java,jar,执行程序,程序,会话,test,nohup,Linux,后台
From: https://www.cnblogs.com/Javaer1995/p/17631632.html

相关文章

  • Java网络编程:IO、NIO
    Socket套接字(socket)是一个抽象层,应用程序可以通过它发送或接收数据,可对其进行像对文件一样的打开、读写和关闭等操作。套接字允许应用程序将I/O插入到网络中,并与网络中的其他应用程序进行通信。网络套接字是IP地址与端口的组合。看不懂?别急,先回忆一下大学学的计算机网络。物理......
  • 一份Linux备份策略-----------------linux备份数据
    一份Linux备份策略详细思路原创 六便士IT 六便士IT 2023-06-2511:00 发表于陕西收录于合集#Linux运维34个在没有任何备份策略的情况下,我建议按照以下步骤去备份数据:确定备份的数据范围:需要备份哪些数据,包括文件、数据库、系统配置等。确定备份周期和保留时间:......
  • [转]Linux下,WinSCP普通用户登录sftp后切换到root权限 教程
    --------------------------------------------------------------------------------------------------------有这个需求的原因:为了提高系统安全性,禁用了root的ssh登录,但是又想使用sftp工具,如winscp,对root下的一些文件进行修改.下面这个方法注释掉了sudoers配置项Defa......
  • 8 JavaScript函数
    8JavaScript函数在JS中声明函数和python差不多.也要有一个关键字顶在前面.python是def,到了JS里换成了function,只不过在JS中没有像python那么死板,必须def后面必须跟上函数名.这也为我们未来做逆向提供了第一个超大的伏笔.//语法//声明函数function函数名(形参1,......
  • Java 基于Hutool实现DES加解密
    POM.XML配置<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://ma......
  • Linux(CentOS)运维脚本工具
     使用说明备份指定目录#备份指定目录文件到指定目录,备份文件名称为:备份目录最后一层目录+"_"+日期.tar.gz#第一个参数:backdir第二参数:备份文件保存目录第三个参数:备份目录/文件shscript.shbackdir/root//home查看CPU、磁盘、内存使用率shscript.shbaseinfo返回结果20......
  • Java中的Future
    1.Future解决了什么问题Future是java中的一个接口,主要用于java多线程计算过程的异步结果获取,能够感知计算的进度,与传统的多线程实现方式,比如继承Thread类,实现runnable接口,它们主要的局限在于对多线程运行的本身缺少监督。2.Callable接口和Runnable接口区别下面是它们之间的主要......
  • java 网络编程
    网络编程一、概述网络编程是指编写运行在多个设备(计算机)的程序,这些设备都通过网络连接起来。计算机网络把分布在不同地理区域的计算机与专门的外部设备用通信线路互连成一个规模大,功能强的网络系统,从而使众多的计算机可以方便地互相传递信息,共享硬件,软件,数据信息等资源。网......
  • Windows中Java安装及环境变量配置
    Windows中Java安装及环境变量配置目录Windows中Java安装及环境变量配置1、下载jdk安装包2、安装JDK3、配置环境变量3.1、环境变量配置页进入3.2、环境变量1:JAVA_HOME3.3、环境变量2:CLASSPATH3.4、环境变量3:Path4、验证安装1、下载jdk安装包通过以下镜像站下载jdk安装包:https://......
  • Java动态追踪
    Java动态追踪什么是Java动态追踪?Java动态追踪是一种工具,可以用于监控Java应用程序的性能,了解应用程序在运行时的行为。Java动态追踪工具可以跟踪应用程序的方法调用、内存使用情况、线程活动等。它可以帮助开发人员找到应用程序的瓶颈和问题,并提供优化建议。Java动态追踪工具可......