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分别拿到的参数。
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一定时间,就调用联机的启动程序,再过一定时间,关闭联机启动批量系统。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)