如何在java中执行shell脚本

如何在java中执行shell脚本,第1张

1、最常用的方法:

Process p = RuntimegetRuntime()exec(SHELL_FILE_DIR + RUNNING_SHELL_FILE + 
            " "+param1+" "+param2+" "+param3); 
int runnngStatus = pwaitFor();

2、通过ProcessBuilder进行调度,这种方法比较直观,而且参数的设置也比较方便:

ProcessBuilder pb = new ProcessBuilder("/" + RUNNING_SHELL_FILE, param1,
                                               param2, param3);
pbdirectory(new File(SHELL_FILE_DIR));
int runningStatus = 0;
String s = null;
try {
     Process p = pbstart();
     try {
        runningStatus = pwaitFor();
     } catch (InterruptedException e) {
       eprintStackTrace();
     }
} catch (IOException e) {
  eprintStackTrace();   
}
if (runningStatus != 0) {
}
return;

参数说明:
RUNNING_SHELL_FILE:要运行的脚本
SHELL_FILE_DIR:要运行的脚本所在的目录; 当然你也可以把要运行的脚本写成全路径。
runningStatus:运行状态,0标识正常。 详细可以看java文档。
param1, param2, param3:可以在RUNNING_SHELL_FILE脚本中直接通过1,1,2,$3分别拿到的参数。

@echo off
set JAVA_HOME=\jre732
set PATH=%JAVA_HOME%\bin
set JNA_HOME=
set CLASSPATH=;%JNA_HOME%\conf
FOR %%F IN (%JNA_HOME%\lib\jar) DO call :addcp %%F
goto extlibe
:addcp
set CLASSPATH=%CLASSPATH%;%1
goto :eof
:extlibe
start javaw -Xms300m -Xmx400m ylxControlServerMain
这是一个简单的bat,如果不会了留下,你做好了程序我给你打包也行

全贴回来,会太长,不让提交。
总述 :MONITOR 冒号开头的是标签,可以用GOTO跳转到。语句后面不需要加;
REM 这个是枚举jsllib等几个变量对应里面的jar路径添加到CLASSPATH
FOR %%F IN (%JSLLIB%\jar,%JUSERLIB%,%JUSERLIB%\jar) DO call :addcp %%F
goto SEL;
REM 这里是接收命令行输入,然后执行相应 的命令
SET /p sel=请选择:
REM 如果是空命令,则给默认的命令
SET SLCMD=-help
REM if 这一堆,就是判断前面的输入,然后执行设置命令、跳转到RUN
REM 执行完毕了,如果之前的命令选择是4,跳转到MONITOR
if /i "%sel%" == "4" goto MONITOR;
REM 原来MONITOR是又让用户进行输入、选择
SET /p var=是否继续(y或n)?

环境:有一套管理系统(包括联机和批量),该管理系统白天运行联机系统,晚上运行批量系统。
目的:联机系统运行到晚上,会停掉,这时候通过在unix下的sh脚本调用并且启动批量系统。
sh脚本可以调用java程序,通过java程序就可以启动了批量系统。
andilyliao 写道最简单的方法 你可以用java写一个job 然后每天晚上执行sh
mginobili 写道可以在脚本中 实现一个定时功能啊
比如每隔半小时 检查一次当前的时间
如果到了晚上 就停止联机系统,运行批量系统
当然前提是 这个sh脚本要一直保持运行状态 并且其错误处理机制要完善
这个sh脚本作为一个定时器,定时调用启动联机系统或者批量系统的程序。
通过while(1)这样一个循环,一直运行不中断,然后sleep一定时间,就调用联机的启动程序,再过一定时间,关闭联机启动批量系统。


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

原文地址: http://outofmemory.cn/yw/13036262.html

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

发表评论

登录后才能评论

评论列表(0条)

保存