0

我有一个进程生成器,可以让一些进程在 linux 中工作(这段代码是由 java 编写的),但是在这些进程工作期间,我想进行一些中断来更改进程配置。

如果我使用假脱机方法,它有太多溢出所以我想用另一种方法对其他进程进行一些中断。

4

2 回答 2

3

由于@Vlad 链接的答案是针对 Windows 的,而这个问题是针对 linux 的,所以这里有一个答案。Linux使用信号中断进程,你可以使用kill发送信号:

// shut down process with id 123 (can be ignored by the process)
Runtime.getRuntime().exec("kill 123");
// shut down process with id 123 (can not be ignored by the process)
Runtime.getRuntime().exec("kill -9 123");

使用 kill,您还可以按照手册页中的说明发送其他信号(并且不必是终止信号)。默认情况下,kill 会发送一个SIGTERM信号,告诉进程终止,但可以忽略它。如果您希望进程终止而没有忽略的可能性,SIGKILL可以使用。在上面的代码中,第一个调用使用 SIGTERM,后一个调用使用 SIGKILL。您也可以明确说明:

// shut down process with id 123 (can be ignored by the process)
Runtime.getRuntime().exec("kill -SIGTERM 123");
// shut down process with id 123 (can not be ignored by the process)
Runtime.getRuntime().exec("kill -SIGKILL 123");

如果您想使用目标程序的名称而不是进程 ID 进行操作,也killall可以接受名称作为参数。顾名思义,这将杀死所有匹配的进程。例子:

// shuts down all firefox processes (can not be ignored)
Runtime.getRuntime().exec("killall -SIGKILL firefox");
于 2013-04-10T06:10:02.670 回答
1

要终止进程,请使用以下命令获取该进程的 pid,使用 ps -ef | grep 'process name' pid 终止 pid 为 16804
Ex 的进程:

[root@localhost content]# ps -ef | grep tomcat
root     16804     1  0 Apr09 ?        00:00:42 /usr/bin/java -Djava.util.logging.config.file=/usr/local2/tomcat66/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Xms1024m -Xmx1024m -/usr/local2/tomcat66/bin/bootstrap.jar -Dcatalina.base=/usr/local2/tomcat66 -Dcatalina.home=/usr/local2/tomcat66 -Djava.io.tmpdir=/usr/local2/tomcat66/temp org.apache.catalina.startup.Bootstrap start

然后在java中使用命令

1. Runtime.getRuntime().exec("kill -15 16804"); // where -15 is SIGTERM 
or
2. Runtime.getRuntime().exec("kill -9 16804"); // where -9 is SIGKILL

检查这个是否有各种Killing 进程和这个是否有killing 信号

于 2013-04-10T06:16:01.010 回答