gpt4 book ai didi

java - 无法通过java应用程序向linux发送kill命令

转载 作者:太空宇宙 更新时间:2023-11-04 09:32:54 24 4
gpt4 key购买 nike

我需要使用 java 杀死 linux 进程的能力。我使用了下面的命令,但看起来我没有权限终止进程,即使进程属于同一用户。我也尝试过使用 sudo ie 运行应用程序。 “sudo java -jar appname.jar”

    private static void forceKillRunningProcess() throws Exception{
//Runtime.getRuntime().exec("sudo pkill -f 'application.jar'");
ProcessBuilder pb = new ProcessBuilder("sudo","pkill","-f", "\"application.jar\"");
pb.start();

}

上面的命令在 CLI 中有效,但在 java 中无效。有变通办法吗?

最佳答案

我想问题出在 sudo - 通常当我们从终端尝试这样的命令时,它会立即提示我们输入密码,这在发布的代码中没有发生。下面的代码有效,但如果我在 kill 语句中添加 sudo,它就不会。

package com.test;

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

public class KillApp {

public static void main(String[] args) {

try {
Process pr = Runtime.getRuntime().exec("pidof chrome");
BufferedReader read = new BufferedReader(new InputStreamReader(
pr.getInputStream()));
String str = read.readLine();
System.out.println("Process id(s) to kill: " + str);
pr = Runtime.getRuntime().exec("kill -9 " + str);
System.out.println("done");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

关于java - 无法通过java应用程序向linux发送kill命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29610420/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com