Java在linux上调用shell脚本

Java在linux上调用shell脚本,第1张

用sh 脚本call 第一不会超时的,第二只要你后台call进去了,就算前台超时了 后台还是一直在执行

建议把你的java program打包成jar 直接call 你的jar 包

列子

#!/bin/bash

java -cp /config:/activationjar:/axisjar:testjar comTestrun param1,param2

-cp 是你文件 path

config 是你配置文件放置位置, jar 和 sh script 同一级目录(可以根据你具体自己修改)

最后只是你需要run 的class了, 在class 里面去call 你对应的procedure

下面介绍Crontab的两种方法。

一、在Crontab中使用PHP执行脚本

就像在Crontab中调用普通的shell脚本一样(具体Crontab用法),使用PHP程序来调用PHP脚本。

每一小时执行myscriptphp如下:

代码如下:

# crontab -e

00 /usr/local/bin/php /home/john/myscriptphp

/usr/local/bin/php为PHP程序的路径。

二、在Crontab中使用URL执行脚本

如果你的PHP脚本可以通过URL触发,你可以使用lynx或curl或wget来配置你的Crontab。

下面的例子是使用Lynx文本浏览器访问URL来每小时执行PHP脚本。Lynx文本浏览器默认使用对话方式打开URL。但是,像下面的,我们在lynx命令行中使用-dump选项来把URL的输出转换来标准输出。

代码如下:

00 lynx -dump >

java程序是提供了这个一方法, Process pro = RuntimegetRuntime()exec(cmds);

但是一般来说,尽量去用一些其他脚本(lua,shell,python)去执行一系列linux命令比较灵活, 而且耗费资源少。但是RuntimegetRuntime()exec()这种调用方式在java虚拟机中是十分消耗资源的,即使命令可以很快的执行完毕,频繁的调用时创建进程消耗十分可观。

java虚拟机执行这个命令的过程是,首先克隆一条和当前虚拟机拥有一样环境变量的进程,再用这个新的进程执行外部命令,最后退出这个进程。频繁的创建对CPU和内存的消耗很大。

下面是一个调用linux命令的例子:

public class Test {  

    public static void main(String[] args) throws Exception{  

        String[] cmds = {"/bin/sh","-c","ps -ef|grep java"};  

        Process pro = RuntimegetRuntime()exec(cmds);  

        prowaitFor();  //阻塞,直到上述命令执行完

        InputStream in = progetInputStream();  

        BufferedReader read = new BufferedReader(new InputStreamReader(in));  

        String line = null;  

        while((line = readreadLine())!=null){  

            Systemoutprintln(line);  

        }  

    }  

}

注:参数中“/bin/sh“ “-c“ 是可以用shell执行指定的命令的意思

这里/bin/sh -c ps -ef|grep java,会执行ps linux命令

以上就是关于Java在linux上调用shell脚本全部的内容,包括:Java在linux上调用shell脚本、如何使用Linux的Crontab定时执行PHP脚本的方法、如何在java程序中调用linux命令或者shell脚本等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/10217792.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存