Java代码实现判断Linux对应pid的进程是否在运行的指令
时间: 2024-12-11 15:30:17 浏览: 12
在Java中,你可以通过`Runtime`和`ProcessBuilder`类来检查一个PID对应的进程是否正在运行。这里是一个简单的示例:
```java
import java.io.IOException;
import java.util.concurrent.TimeUnit;
public class ProcessChecker {
public static boolean isProcessRunning(String pid) throws IOException, InterruptedException {
// 创建一个新的ProcessBuilder实例
ProcessBuilder pb = new ProcessBuilder("ps", "-p", pid, "-o", "state=");
// 启动进程并获取输出流
Process process = pb.start();
try (BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()))) {
String line = reader.readLine();
if (line != null && !"T".equals(line.trim())) { // "T"表示正在运行
return false;
}
}
// 如果还没有结束,等待一段时间后再次检查
if (!process.waitFor(5, TimeUnit.SECONDS)) { // 等待5秒
return true; // 如果还在运行,则返回true
} else {
return false; // 进程已经结束
}
}
public static void main(String[] args) {
String pidToCheck = "your_pid_here"; // 替换为你要检查的实际PID
try {
System.out.println(isProcessRunning(pidToCheck) ? "进程正在运行" : "进程已停止");
} catch (IOException | InterruptedException e) {
e.printStackTrace();
}
}
}
```
在这个例子中,我们尝试运行`ps -p <pid> -o state=`命令来查看指定PID的进程状态,如果状态为"T",则表示进程在运行。注意替换`pidToCheck`为你实际想要检查的PID。
阅读全文