0 0

如何用Java后台执行SHELL脚本?5

有一个SHELL脚本,运行时常驻内存,所以如果是在命令行下运行,命令会是像这样:
nohup /someurl/test.sh&


为了方便管理、启动,现在有一个JAVA前台程序,使用Runtime.getRuntime().exec()的方式,想启动或者中止这个SHELL脚本。

中止程序没有问题,取得PID后,用kill命令就可以结束这个进程了。

现在的问题是,如何才能后台启动这段程序,而同时让JAVA不用等待程序执行完成?
下面这段程序虽然能启动,但是除非手动中止t.sh,否则最后的那后finished...一直不会执行, java在等待程序执行完成后才继续下面的操作。
public static void main(String[] args) throws Exception{
                String cmd = "nohup /pmapp/liuyi/java/t.sh&";

                String[] cmds = {"/bin/ksh", "-c", "nohup /someurl/test.sh&"};
                Process p = Runtime.getRuntime().exec(cmds);
                BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
                String s = "";                
                while((s=in.readLine()) != null){
                        System.out.println(s);
                }
                System.out.println("finished...");

        }



问题补充:
lovewhzlq 写道
新建一个线程来执行这个shell脚本就行了


那么那个线程就一直放在那儿不管了直到shell被中止后,自动释放吗?
2010年3月18日 14:26

2个答案 按时间排序 按投票排序

0 0

采纳的答案

那个线程就一直放在那儿不管了直到shell被中止后就会自动释放

当然你也可以显示的中断这个线程嘛,因为是你新建的,你有它的引用嘛

2010年3月18日 14:42
0 0

新建一个线程来执行这个shell脚本就行了

2010年3月18日 14:32

相关推荐

    shell,bat脚本运行java程序

    下面将详细介绍如何使用shell脚本(适用于Unix/Linux系统)和bat脚本(适用于Windows系统)来运行Java程序。 **shell脚本运行Java程序** 在Unix/Linux环境中,我们可以创建一个.sh文件作为shell脚本来执行Java程序...

    启动停止java服务的shell脚本

    本文将详细介绍如何使用Shell脚本来启动和停止Java服务,适用于包括SpringBoot在内的各种Java应用程序。 首先,让我们理解什么是Shell脚本。Shell脚本是Linux或Unix操作系统中的批处理程序,由一系列命令组成,可以...

    linux系统java服务自启动shell脚本及服务cpu内存占用监控脚本

    自启动shell脚本和CPU、内存占用监控脚本能确保Java服务在系统启动时自动运行,并实时监测其性能状态,以便及时发现和处理潜在问题。下面将详细介绍这两个方面的内容。 一、Linux系统Java服务自启动shell脚本 自...

    java运行shell脚本方法示例

    在Java编程中,有时我们需要在程序中执行操作系统级别的任务,比如运行Linux的Shell脚本。这时,我们可以利用Java内置的`Runtime`类的`execute`方法来实现这一目标。本文将详细讲解如何在Java中使用`Runtime.execute...

    基于Java和Shell脚本的家庭助手工程助手后台服务设计源码

    该项目是一款基于Java和Shell脚本开发的家庭助手-工程助手后台服务源码,总计包含341个文件,涵盖271个Java源文件、31个XML配置文件、28个属性文件、5个Markdown文档、2个Shell脚本文件、1个Git忽略文件、1个LICENSE...

    linux能持续后台运行jar的脚本

    linux能持续后台运行jar的脚本,可以让java项目能在linux服务器上持续运行。

    Shell执行/调用Java/Jar程序例子

    这篇博客“Shell执行/调用Java/Jar程序例子”探讨了如何使用Shell脚本来启动和控制Java应用程序,特别是JAR文件。这里我们将深入讲解相关知识点。 1. **Shell脚本基础** Shell脚本是Linux或Unix操作系统中的命令行...

    Shell 脚本实现多线程的代码

    在IT领域,Shell脚本是Linux/Unix系统中...总结来说,Shell脚本实现多线程主要是通过后台运行命令或创建子进程来模拟并发执行,适用于简单的任务调度和自动化场景。而实际的多线程编程则需要借助其他更强大的编程语言。

    linux 通过脚本执行java程序

    接下来,创建一个.sh(shell script)文件,例如`run_java.sh`,用文本编辑器打开它。在文件中,你可以按照以下格式编写脚本: ```bash #!/bin/bash # 设置Java程序的主类名 MAIN_CLASS=...

    远程shell调用.rar

    这个“远程shell调用.rar”文件包含了一个基于Java的工具,它允许开发者通过SSH连接到Linux服务器并执行Shell脚本,从而简化了这一过程。 首先,让我们了解一下SSH2。SSH2是SSH协议的第二版,相比SSH1,它提供了更...

    基于Java及Shell脚本技术的权限管理称重后台系统设计源码

    该项目为基于Java及Shell脚本技术的权限管理称重后台管理系统设计源码,包含319个文件,其中268个为Java源文件,25个为XML配置文件,11个为VM文件,3个为BAT脚本,3个为YAML配置文件,2个为SQL文件,2个为属性文件,...

    Java项目linux启动脚本以及日志分割安装软件

    2. **配置使用**:在Shell脚本中,可以将原本要写入单个日志文件的输出通过管道`|`传递给cronolog,如`your_command | cronolog /path/to/log/%Y%m%d.log`。这里的`%Y%m%d.log`表示按照年月日格式创建日志文件。 3. ...

    常用shell脚本命令

    "常用shell脚本命令" 显示包含文字 aaa 的下一行的内容 sed 命令是 Unix/Linux 系统中非常强大的文本处理工具。使用 sed 命令可以对文本进行各种操作,如删除、替换、添加等。在这里,我们使用 sed 命令来显示包含...

    基于Spring Boot的Java+Shell开发soho管理后台设计源码

    本项目是一款基于Spring Boot框架开发的简易管理后台,采用Java和Shell脚本语言编写,源码文件共计970个。其中,Java源文件739个,XML配置文件111个,Markdown文档31个,SQL脚本16个,IntelliJ IDEA项目文件16个,...

    Linux下启动和停止jar包运行的脚本

    在Linux环境下,管理Java应用程序的运行状态,如启动和停止jar包,通过shell脚本实现自动化操作,是常见的需求。本文将深入解析如何利用shell脚本来控制Java应用程序的启动和停止,基于提供的“startTest.sh”和...

    Linux crontab定时执行Shell脚本需要执行特定的命令时解决思路

    然而,在使用`crontab`定时执行Shell脚本时,可能会遇到一些问题,特别是在执行包含特定命令(如Java应用)的脚本时。本文将深入探讨如何解决此类问题。 首先,我们来看一个典型的场景:项目上线后,需要定期检查...

    shell启动项目

    在IT行业中,Shell脚本是Linux或Unix操作系统中不可或缺的一部分,它是一种强大的自动化工具,能够帮助用户执行一系列命令,管理任务,甚至启动复杂的项目。在本文中,我们将深入探讨"shell启动项目"这一主题,包括...

    基于若依框架的Java、Shell和HTML多语言失物招领系统后台管理设计源码

    该项目是一款基于若依框架构建的综合性失物招领系统后台管理平台源码,总计包含398个文件,涵盖323个Java源代码文件、40个XML配置文件、7个SQL数据库脚本、5个Markdown文档、4个Shell脚本、4个YAML配置文件、4个属性...

    Linux 启动停止SpringBoot jar 程序部署Shell 脚本的方法.zip

    在Linux环境中,管理和部署SpringBoot应用通常涉及到自动化脚本,特别是使用Shell脚本来启动和停止应用程序。本主题将深入探讨如何编写这样的脚本,以便高效地处理SpringBoot的jar程序。 首先,理解SpringBoot的...

    基于Java和Shell的aps制造系统排产排程设计源码

    该项目为aps-离散制造系统排产排程APS的后台服务设计源码,主要采用Java语言开发,并辅以Shell脚本。源码包含2616个文件,其中Java源文件占绝大多数(2585个),其次是SQL脚本(10个),其他文件类型包括Markdown(5...

Global site tag (gtag.js) - Google Analytics