1、背景描述

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

1.1、直接执行程序

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

1.2、直接执行程序后中断

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

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

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

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

2、解决方式

2.1、使用 &

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

  • 使用格式:command &

注意:

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

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

java -jar test_script.jar > test.log &

2.2、使用 nohup

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

  • 使用格式:nohup command

注意:

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

强行使用Ctrl+C中断的话,这时虽然可以在当前会话中执行其他操作,但是程序也结束运行了

nohup 会默认将程序的输出信息从标准输出重定向到当前目录的nohup.out文件中;

因此可以不用额外使用 > test.log 将程序的输出信息从标准输出重定向到(test.log)文件中

nohup java -jar test_script.jar

2.3、结合使用 nohup 和 &

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

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

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

  • 结合使用格式:nohup command &

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

 nohup java -jar test_script.jar &

3、扩展知识

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

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

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

Linux下后台运行Java程序的更多相关文章

  1. Linux下怎么运行java程序

    在Linux下安装好jdk配置好环境变量后,要回到程序所在的目录下,然后跟在windows一样输入   java (程序名)运行,原理是就好像在Windows的DOS环境下执行java这个命令时必须在 ...

  2. 使程序在Linux下后台运行,程序运行前后台切换

    一.为什么要使程序在后台执行 我们计算的程序都是周期很长的,通常要几个小时甚至一个星期.我们用的环境是用putty远程连接到日本Linux服务器.所以使程序在后台跑有以下三个好处: 1:我们这边是否关 ...

  3. 不错的linux下通用的java程序启动脚本

    不错的linux下通用的java程序启动脚本(转载) 虽然写起动shell的频率非常不高...但是每次要写都要对付一大堆的jar文件路径,新加jar包也必须要修改起动shell. 在网上找到一个挺好的 ...

  4. 在命令提示符下,运行Java程序时,提示"找不到或无法加载主类"

    小白:在命令提示符下,运行Java程序时,提示"找不到或无法加载主类". 大神:运行Java程序的作用是让Java解释器装载,检验并运行字节码文件(.class).因此,在运行Ja ...

  5. Linux(9)后台运行python程序并输出到日志文件

    后台运行python程序并标准输出到文件 现在有test.py程序要后台部署, 里面有输出内容 使用命令: nohup python -u test.py > test.log 2>&am ...

  6. 使程序在Linux下后台运行

    一.为什么要使程序在后台执行 我们计算的程序都是周期很长的,通常要几个小时甚至一个星期.我们用的环境是用putty远程连接到日本Linux服务器.所以使程序在后台跑有以下三个好处: 1:我们这边是否关 ...

  7. 【转】使程序在Linux下后台运行 (关掉终端继续让程序运行的方法)

    一.为什么要使程序在后台执行 我们计算的程序都是周期很长的,通常要几个小时甚至一个星期.我们用的环境是用putty远程连接到日本Linux服务器.所以使程序在后台跑有以下三个好处: 1:我们这边是否关 ...

  8. 使程序在Linux下后台运行 (关掉终端继续让程序运行的方法)

    你是否遇到过这样的情况:从终端软件登录远程的Linux主机,将一堆很大的文件压缩为一个.tar.gz文件,连续压缩了半个小时还没有完成,这时,突然你断网了,你登录不上远程Linux主机了,那么前面的半 ...

  9. 经验分享:分析如何使程序在Linux下后台运行---Linux就该这么学!

    转至:https://www.cnblogs.com/maoju/p/13848740.html 一.为什么要使程序在后台执行   我们计算的程序都是周期很长的,通常要几个小时甚至一个星期.我们用的环 ...

  10. 不错的linux下通用的java程序启动脚本(转载)

    转自:http://www.cnblogs.com/langtianya/p/4164151.html 虽然写起动shell的频率非常不高...但是每次要写都要对付一大堆的jar文件路径,新加jar包 ...

随机推荐

  1. 2022-04-23:给定一个长度为4的整数数组 cards 。你有 4 张卡片,每张卡片上都包含一个范围在 [1,9] 的数字。您应该使用运算符 [‘+‘, ‘-‘, ‘*‘, ‘/‘] 和括号 ‘

    2022-04-23:给定一个长度为4的整数数组 cards .你有 4 张卡片,每张卡片上都包含一个范围在 [1,9] 的数字.您应该使用运算符 ['+', '-', '*', '/'] 和括号 ' ...

  2. SQL Server2019 新增字段并设置默认值

    命令: ALTER TABLE 表名 add 列名 数据类型 default 默认值 not null 例如: ALTER TABLE LJEL005H add el_req int default ...

  3. 回溯理论基础及leetcode例题

    学习参考 回溯 与递归相辅相成;回溯是递归的副产品,只要有递归就会有回溯. 回溯函数也就是递归函数,指的都是一个函数. 回溯搜索法 纯暴力搜索 解决的问题 组合问题:N个数里面按一定规则找出k个数的集 ...

  4. Linux 内存管理 pt.3

    哈喽大家好,我是咸鱼 在<Linux 内存管理 pt.2>中我们学习了多级页表和大页,我们知道了由于历史遗留的问题,Linux 的页通常为 4KB 这样就会导致一个页表里面会有特别多页,为 ...

  5. es笔记四之中文分词插件安装与使用

    本文首发于公众号:Hunter后端 原文链接:es笔记四之中文分词插件安装与使用 前面我们介绍的操作及演示都是基于英语单词的分词,但我们大部分使用的肯定都是中文,所以如果需要使用分词的操作肯定也是需要 ...

  6. shrio QuickStart

    Shrio三大对象:  springboot整合shrio 登录拦截认证 创建项目时勾选web,导入依赖: <dependency> <groupId>org.apache.s ...

  7. 对promise的简单理解

    随着ES6的推行它的许多新特性受到了广大开发者的好评,比如promise,为什么使用这个promise呢,他具体能帮我们做些啥? 其实从字面意思上来理解promise就是承诺,比如:你命令你的手下本月 ...

  8. WPF入门教程系列二十六——DataGrid使用示例(3)

    WPF入门教程系列目录 WPF入门教程系列二--Application介绍 WPF入门教程系列三--Application介绍(续) WPF入门教程系列四--Dispatcher介绍 WPF入门教程系 ...

  9. 如何基于G6进行双树流转绘制?

    1. 背景 业务背景:CRM系统随着各业务条线对线索精细化分配的诉求逐渐增加,各个条线的流向规则会越来越复杂,各个条线甚至整个CRM的线索流转规则急需一种树形的可视化的图来表达. 技术背景:在开发之前 ...

  10. 癌症中克隆种群结构统计推断分析软件PyClone安装小记

    由于微信不允许外部链接,你需要点击文章尾部左下角的 "阅读原文",才能访问文中链接. PyClone 是一种用于推断癌症中克隆种群结构的统计模型. 它是一种贝叶斯聚类方法,用于将深 ...