Des de Java podem executar comandes en un subprocess en la shell del sistema operatiu.
Referències:
Donem un timout de 5 segons perquè la comanda s'executi, després la matem si encara no ha acabat (a l'exemple justament hem posat una comanda tail -f /var/log/syslog
que no acaba mai i bloqueja el procés per sempre).
import java.util.concurrent.TimeUnit; import java.lang.Runtime; import java.lang.Process; class jcmd { public static void main(String args[]) { System.out.println("Iniciant comanda..."); String cmd[] = {"tail","-f","/var/log/syslog"}; try { // objecte global Runtime Runtime rt = java.lang.Runtime.getRuntime(); // executar comanda en subprocess Process p = rt.exec(cmd); // donem un temps d'execució TimeUnit.SECONDS.sleep(5); // el matem si encara no ha acabat if( p.isAlive() ) p.destroy(); p.waitFor(); // comprovem el resultat de l'execució System.out.println("Comanda 1 exit code="+p.exitValue()); } catch (Exception e) { e.printStackTrace(); } // finish System.out.println("Comandes finalitzades."); } }