设为首页 加入收藏

TOP

Linux下后台运行Java程序
2023-08-26 21:10:54 】 浏览:26
Tags:Linux 后台运 Java 程序

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

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇mysql DBUtils 存储过程代码生成 下一篇java与es8实战之一:以builder pa..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目