java啟動一個進程、殺死一個進程、顯示當前進程

來源:互聯網
上載者:User

 package com.ffshi.util;

import java.io.IOException;
import java.util.Scanner;

public class JavaWindowsCommandUtil {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub

        // startTask("E://Fetion//Fetion.exe");
        killTask("javaw");

    }

    /**
     * 殺死一個進程
     *
     * @param task
     */
    public static void killTask(String task) {

        try {
            Process process = Runtime.getRuntime().exec("taskList");
            Scanner in = new Scanner(process.getInputStream());
            int count = 0;
            while (in.hasNextLine()) {
                count++;
                String temp = in.nextLine();

                if (temp.contains(task)) {
                    String[] t = temp.split(" ");
                    // 判斷該進程所佔記憶體是否大於20M
                    if (Integer.parseInt(t[t.length - 2].replace(",", "")) > 20000) {
                        temp = temp.replaceAll(" ", "");
                        // 獲得pid
                        String pid = temp.substring(9, temp.indexOf("Console"));
                        Runtime.getRuntime().exec("tskill " + pid);

                        // dos下開cmd視窗 ntsd -c q -p PID
                        // Runtime.getRuntime().exec("ntsd -c q -p 1528");
                    }
                }
                // System.out.println(count + ":" + temp);
            }
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    /**
     * 顯示當前機器的所有進程
     */
    public static void showTaskList() {

        try {
            Process process = Runtime.getRuntime().exec("taskList");
            Scanner in = new Scanner(process.getInputStream());
            int count = 0;
            while (in.hasNextLine()) {
                count++;
                System.out.println(count + ":" + in.nextLine());
            }
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    /**
     * 啟動一個進程
     *
     * @param task
     */
    public static void startTask(String task) {
        try {
            Runtime.getRuntime().exec(task);

        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

}

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.