Java por si só inclúe unha ampla colección de clases coas principais funcionalidades que podemos necesar, se non o ofrece Na API é moi posible que haxa unha biblioteca que a proporcione. Pero nalgún momento, quizais recibamos o caso de que un comando de comandos devolva a información ou realice a acción que necesitamos. Pode ser un comando do sistema GNU / Linux, Windows ou Mac OS X ou un guión en Java, Python, Ruby ou outro idioma de programación. A través do proceso e clase de processbuilder é posible para nós lanzar un proceso de calquera comando de comandos e acceder á súa entrada estándar, saída estándar e saída de erro.
A clase de proceso representa o proceso que lanzamos, temos dous Formas de obter unha referencia Esta clase, unha con Runtime.getInstance (). Exec () e outra coa clase de processbuilder con ambos será posible establecer variables de ambiente, o directorio de traballo ou redireccionar a entrada e saír. Obtivo referencia a unha instancia de proceso co método GetInputStream () Leremos a saída estándar do proceso, con GetErrorInputstream () a saída de erro e con GeToutputsterstream () Podemos enviar contido á entrada estándar. Outros métodos de utilidade permitiranos saber se o proceso aínda está vivo con isalive (), obtén o código de saída con ExitValue (), agarde que termine con espera (). Finalmente con destruír () podemos terminar abruptamente o proceso.
Non son da notable noticia de Java 8 pero a partir desta versión pode establecer unha espera máxima para a rescisión do proceso, as variables de ambiente e O directorio de traballo. E máis pequenos cambios, pero moi útil, xa que estes serán engadidos a outras clases da API.
Isto é posible facer calquera cousa que o sistema poida facer de acordo cos comandos que instalaron ou poidan instalarse e Isto significa que está ao alcance de Java nun sistema GNU / Linux o poder da súa liña de comandos. Por exemplo, supoñamos que queremos saber nun programa Java o tempo que se iniciou un sistema que sería útil se queremos implementar algún tipo de métricas de monitorización co actuador de arranque de primavera. Java non ten un método que proporcione esta información na súa API, con todo, en GNU / Linux podemos coñecer estes datos usando o sistema de ficheiros virtual accesibles en / proc, específicamente no ficheiro / proc / hora de actividade. Este ficheiro contén dous números o primeiro é o que nos interesaría sendo o número de segundos desde que comezou o sistema e o segundo o tempo que permaneceu en repouso. O segundo número nun sistema con procesador con varios núcleos físicos ou lóxicos é probable que sexa superior ao primeiro.
|
|
Este sería o programa Java para saber canto tempo comezou un sistema GNU / Linux. En primeiro lugar, o proceso créase, espérase que finalice e obtense o seu código de saída, obtense a saída do proceso (entrada para o programa), o resultado é procesado e os segundos que comezou o sistema.
|
|
main.java
1 2
Segundos desde el inicio del sistema: 3115,77
main.out
Executar un comando de comando dános acceso a un novo mundo de posibilidades aínda que se podemos mellor ter unha API dispoñible para invocar a funcionalidade que queremos en lugar dunha lectura máis fráxil de integración e escribindo na saída, erro e entrada do proceso .. No seguinte artigo baseado en isto é que comentarei sobre como enviar un correo electrónico en Java asinado dixitalmente con GPG, aplicando este mesmo podemos obter o país e a cidade con base na dirección IP nunha aplicación web.
O código fonte de orixe completo pode descargalo desde o repositorio de Blog Bitix aloxado en GitHub e probalo no seu computador executando o seguinte comando:
./gradlew run