package itn.com.cmm.util;

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class OsProcessCheckUtil {

	/**
	 * 운영체제의 특정 프로세스 실행여부 확인하는 유틸
	 * 
	 * */
	
	public static String WindowProcessCheck(String processNm) throws Exception{
		
		String line ="";
        String pId="";
		
		try {
	        
	        Process p = Runtime.getRuntime().exec(System.getenv("windir") +"\\system32\\"+"tasklist.exe");
	        BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()));
	        while ((line = input.readLine()) != null) {
	            System.out.println(line); //<-- Parse data here.
	            String [] words = line.split(" ");
	            String [] procInfo = new String[10]; 
	            if (words[0].contains(processNm)){
		            //System.out.println(line);
		            int nCnt = 0;
		            for(String item : words){
			            if (item.equals(""))
			            continue;
			              System.out.print(item + " ");
			            procInfo[nCnt] = item;
			            nCnt++;
		            }
	             
		            System.out.println("Process Name : "+ procInfo[0]);
		            System.out.println("Process ID : "+ procInfo[1]);
		            System.out.println("Memory Usage : "+ procInfo[4]);
		            pId = procInfo[1];
	            }
	        }
	        input.close();
	    } catch (Exception err) {
	        err.printStackTrace();
	    }
		
		return pId;
	}
	
	public static String LinuxProcessCheck(String processNm) throws Exception{
		
		String line ="";
        String pId="";
		
		try {
	        
			System.out.println("++++++++++++++++processNm++++++++++++++++++++++++"+processNm);
			String[] cmd = {"ps -ef | grep EnDeServer"};
	        Process p = Runtime.getRuntime().exec(cmd);
	        System.out.println("+++++++++++++++++++++++ppppppppppppppppppp++++++++++++++++++++++++++++++"+p); 
	        
	        BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()));
	        System.out.println("++++++++++++++++++++++++while Start++++++++++++++++++++++++++++++++++");
	        System.out.println("+++++++++++++++input.readLine()+++++++++++++++++" + input.readLine());
	        while ((line = input.readLine()) != null) {
	            System.out.println(line); //<-- Parse data here.
	            String [] words = line.split(" ");
	            String [] procInfo = new String[10]; 
	            if (words[0].contains(processNm)){
		            System.out.println("+++++++++++line++++++++++++++++++++++"+line);
		            int nCnt = 0;
		            for(String item : words){
			            if (item.equals(""))
			            continue;
			              System.out.print(item + " ");
			            procInfo[nCnt] = item;
			            nCnt++;
		            }
	             
		            System.out.println("Process Name : "+ procInfo[0]);
		            System.out.println("Process ID : "+ procInfo[1]);
		            System.out.println("Memory Usage : "+ procInfo[4]);
		            pId = procInfo[1];
	            }
	        }
	        input.close();
	    } catch (Exception err) {
	        err.printStackTrace();
	    }
		
		return pId;
	}
}
