자바 프로 세 스 상세 설명 및 인 스 턴 스

3679 단어 JavaProcess
Runtime
자바 는 런 타임 을 통 해 cmd 명령,셸 파일 실행 등 다른 프로 세 스 를 호출 할 수 있 습 니 다.시스템 시간 을 설정 하고 셸 파일 을 실행 할 수 있 습 니 다.여기에 몇 가지 유용 한 응용 을 기록 합 니 다.아래 와 같 습 니 다.
로 컬 시간 설정
cmd/c date 명령 을 호출 하여 로 컬 시간 설정 을 완료 할 수 있 습 니 다.그러나 이 명령 은 win 7 에서 사용 할 수 있 지만 win 10 은 관리자 권한 이 필요 합 니 다.시스템 시간 을 설정 할 수 없습니다.win 7 에서 자바 를 사용 하여 로 컬 시간 코드 를 다음 과 같이 수정 합 니 다.주의해 야 할 것 은 waitFor 가 필요 합 니 다.그렇지 않 으 면 즉시 효력 이 발생 하지 않 습 니 다.

 /**
   *       
   * @param date yyyy-MM-dd  
   */
  private static void setSystemDate(String date){
    Process process = null;
    String command1 = "cmd /c date "+date;
    System.out.println(command1);
    try {
      process = Runtime.getRuntime().exec(command1);
      //         ,           
      process.waitFor();
    } catch (IOException | InterruptedException e) {
      e.printStackTrace();
    }finally{
      if(process!=null){
        process.destroy();
      }
    }
  }
네트워크 카드 물동량 계산
cat/proc/net/dev 명령 을 통 해 네트워크 카드 정 보 를 얻 을 수 있 으 며,네트워크 카드 전송 과 패 킷 수신 정 보 를 두 번 받 아 네트워크 카드 의 스루풋 을 계산 할 수 있 습 니 다.다음 과 같이 구현:

 /**
   * @Purpose:         
   * @param args
   * @return float,        
   */
  public static Double getNetworkThoughput() {
     Double curRate = 0.0;
    Runtime r = Runtime.getRuntime();

    //          
    long startTime = System.currentTimeMillis();
    long total1 = calculateThoughout(r);

    //   1  ,    
    try {
      Thread.sleep(1000);
    } catch (InterruptedException e) {
      e.printStackTrace();
    }

    //          
    long endTime = System.currentTimeMillis();
    long total2 = calculateThoughout(r);

    //            :   Mbps(million bit per second)
    double interval = (endTime-startTime)/1000;
    curRate = (total2-total1)*8/1000000*interval;

    System.out.println("           ,           :"+(curRate)+"Mbps.");
    return curRate;
  }

  /**
   *                
   * @param runtime
   * @return
   */
  private static long calculateThoughout(Runtime runtime){
    Process process = null;
    String command = "cat /proc/net/dev";
    BufferedReader reader = null;
    String line = null;
    long total = 0;
    try {
      process = runtime.exec(command);
      reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
      while ((line = reader.readLine()) != null) {
        line = line.trim();
        //         
        if (line.startsWith("eth")) {
          log.debug(line);
          line = line.substring(5).trim();
          String[] temp = line.split("\\s+");
          total+=(Long.parseLong(temp[0].trim()));// Receive
          total+=(Long.parseLong(temp[8].trim()));// Transmit
        }
      }
    } catch (NumberFormatException | IOException e) {
      e.printStackTrace();
    } finally {
      if (reader != null) {
        try {
          reader.close();
        } catch (IOException e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
        }
      }

      if (process != null) {
        process.destroy();
      }
    }
    return total;
  }

읽 어 주 셔 서 감사합니다. 여러분 에 게 도움 이 되 기 를 바 랍 니 다.본 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!

좋은 웹페이지 즐겨찾기