Red de conocimiento informático - Conocimiento del nombre de dominio - Cómo ejecutar comandos de Linux desde código Java

Cómo ejecutar comandos de Linux desde código Java

El siguiente método admite llamadas a la línea de comandos en sistemas Linux y Windows. Al mismo tiempo, se utilizó el kit de herramientas apache lang commons-lang3-3.1.jar para determinar el tipo de sistema operativo y también se utilizó log4j-1.2.16.jar para imprimir el registro. En cuanto a si rm -rf puede eliminar archivos correctamente, puede llamar manualmente a la línea de comando para intentarlo.

¿privado?String?callCmd(String?cmd)?throws?InterruptedException,?UnHandledOSException,?ExecuteException?{

if(SystemUtils. IS_OS_LINUX){

intentar?{

/?Usar Runtime para ejecutar comandos y generar objetos de proceso

Process?process?=?Runtime.getRuntime().exec(

new ? Cadena[]? {?" /bin/sh",?" -c",?cmd?});

int?exitCode?=?process.waitFor();

/?Obtenga el flujo de salida del resultado del comando

InputStream?is?=?process.getInputStream();

/?Utilice la clase de flujo de salida de lectura para leer

InputStreamReader?isr?=?new?InputStreamReader(is);

/?Leer líneas usando un buffer

BufferedReader?br?=?new?BufferedReader(isr ) ;

String?line?=?null;

StringBuilder?sb?=?new?StringBuilder();

mientras?((line?= br.readLine())?{

System.out.println(línea);

sb.append(línea);

}

is.close();

isr.close();

br.close();

¿regresar?{

System.err.println("NullPointerException?"?+?e.getMessage());

logger.error(cmd);

}?catch?(java .io.IOException?e)?{

System.err.println("IOException?"?+?e.getMessage());

}

throw?new?ExecuteException(cmd?+? "¡Error de ejecución! ") )

}

if(SystemUtils.IS_OS_WINDOWS){

¿Proceso?proceso;

¿probar?{

//process?=?new?ProcessBuilder(cmd).start();

String[]?param_array?=?cmd.split("[\s]+"); p>

ProcessBuilder?pb?=?new?ProcessBuilder(param_array);

Process?=?pb.start();

/*process=Runtime. getRuntime( ).exec(cmd);*/

int?exitCode?=?Process.

waitFor();

InputStream?is?=?process.getInputStream();

InputStreamReader?isr?=?new?InputStreamReader(es);

BufferedReader?br?=?new?

StringBuilder?sb?=?new?{

System.out.println(line);

sb.append (línea);

}

is.close();

isr.close();

br.close() ;

retorno?{

//?TODO?Auto-generado?catch?block

e.printStackTrace();

}

throw?new?ExecuteException(cmd?+?" ¡Error de ejecución!") )

}

throw?new?UnHandledOSException("Este sistema operativo no es compatible");

}