- 有时候我们在Linux中运行Java程序时,需要调用一些Shell命令和脚本。而Runtime.getRuntime().exec()方法给我们提供了这个功能,而且Runtime.getRuntime()给我们提供了以下几种exec()方法:
// 在单独的进程中执行指定的字符串命令。
Process exec(String command)
// 在单独的进程中执行指定命令和变量。
Process exec(String[] cmdarray)
// 在指定环境的独立进程中执行指定命令和变量。
Process exec(String[] cmdarray, String[] envp)
// 在指定环境和工作目录的独立进程中执行指定的命令和变量。
Process exec(String[] cmdarray, String[] envp, File dir)
// 在指定环境的单独进程中执行指定的字符串命令。
Process exec(String command, String[] envp)
// 在有指定环境和工作目录的独立进程中执行指定的字符串命令。
Process exec(String command, String[] envp, File dir)
String shell = "/usr/local/app/start.sh"
Runtime.getRuntime().exec(shell);
String vbsFile = "D:/App/todo-list/start.vbs";
Runtime.getRuntime().exec("cscript " + vbsFile);
正斜杠可以正常再窗口中运行,不需要使用 “\” 来做 。
赠送一个 .bat脚本,如何重启java程序实例
rem 关闭单行执行
@echo off
rem 定义要重启的jar包名称
set name=todo-list.jar
rem 利用jps -l 命令(查看在执行的java程序),再配个管道符|,做筛选,找到 需要找的jar包程序
for /f "usebackq tokens=1,2" %%a in (`jps -l ^|findstr %name%`) do (
set pid=%%a
set pname=%%b
)
if not defined pid (echo process %name% does not exists) else (
rem 根据进程ID,kill进程
taskkill /f /pid %pid%
)
rem 暂停2秒
ping /n 2 127.1>nul
rem 设置log文件名称
set dt=%date:~0,4%%date:~5,2%%date:~8,2%
rem 启动jar包程序
java -jar D:\App\todo-list\todo-list.jar >> D:\App\todo-list\log\log%dt%.txt
exit
网友评论