1 ?启动一个java程序并输出日志:
List<String> commadList = new ArrayList<String>();
commadList.add("cmd");
commadList.add("/c");
commadList.add("java -Dfile.encoding=GBK -classpath ./;classes;bin;lib/system/*;lib/user/*;lib/* -XX:PermSize=256m -XX:MaxPermSize=512m -Xms512m -Xmx512m com.sunline.flowbank.cr.core.CRMain");
commadList.add("start");
commadList.add(subsysid);
logger.info("开始启动" +obj.getSubsysId() +"子系统!" );
ProcessBuilder pbuilder = new ProcessBuilder(commadList);
pbuilder.directory(new File(projPath));
proc = pbuilder.start();
?
2 ?关闭一个进程并输出日志
if( "".equals(obj.getProcId()))
{
cmd = "cmd /c wmic process where caption=\"java.exe\" get ?commandline,processid | findstr /C:\"CRMain start "+obj.getSubsysId()+"\"";
}else
{
cmd = "cmd /c wmic process where \"caption='java.exe' and processid='"+obj.getProcId()+"'\" get processid | findstr \""+obj.getProcId()+"\"";
}
Process proc ?= Runtime.getRuntime().exec(cmd);
InputStream is = proc.getInputStream();?
InputStreamReader isr = new InputStreamReader(is, "GBK");?
BufferedReader br = new BufferedReader(isr);?
String line;?
while ((line = br.readLine()) != null) {?
logger.info(line);?
//if(!line.equals(""))
//System.out.println( line.substring(line.lastIndexOf("CRMain start test")+"CRMain start test".length(),line.length()).trim());
if(!line.equals(""))
{
obj.setProcId(line.trim());
?
for(SubsysObj subtmp : subsylist)
{
if(subtmp.equals(obj))
obj.setMsg(subtmp.getMsg());
}
return true;
}
?
obj.setProcId("");
}?
?
3 ?dos下查看和杀死进程
?
查看进程是否在运行
tasklist /nh|find /i "进程名.exe"
ps:双引号中的进程名也可以是部分匹配
?
杀进程:
taskkill /im 进程名
taskkill /pid 进程序号 -t(结束该进程) -f(强制结束该进程以及所有子进程)
wmic process where name="进程名" call terminate
ntsd -c p -p 进程序号
ps:第一种和第三种可同时关闭多个进程名相同的进程
?
4? 查询一个端口是否开启
netstat -aon|findstr 端口号