2014-03-06 155 views
0

我正在使用run_command shell程序在客户机上运行服务器上的某些命令,该shell程序通过套接字通信在服务器上运行特定命令。在服务器端,我使用java程序来运行服务器上的命令,通常对于像ls这样的命令,pwd它运行良好,但对于像"tail -f"这样的命令,虽然我按ctrl^c来停止命令,但它并未在服务器端停止。如何杀死在服务器上运行的进程

  1. 有没有什么办法来捕捉CTRL^C,这样我会送些味精,关于服务器

    杀死运行命令
  2. 杀死服务器上的一些命令,我​​怎么能只杀死特定的命令这是从客户端运行没有任何其他

回答

1

使用kill命令。欲了解更多信息请参考网址Kill Command for UNIX

+0

我知道,杀将做的工作,我已经提到的,我问怎么使用它,以及是否有任何其他选项... – user2572969

+0

#杀-9'进程的id' –

+0

我怎样才能获得在服务器上运行的proccess的proccess id,并且我还问我需要捕获ctrl^c操作,每当用户做ctlr^c操作时应该发送自动kill命令。 – user2572969

1

首先,我认为由于某种原因,您不能在该run_command事件上运行kill。如果可以,请忽略下面的答案。

在服务器上,启动Process。将Process对象与一个ID(自动生成)一起包装。将包装添加到列表或地图。在客户端显示ID给用户。

当用户想要杀死进程时,发送类似“mykill”的东西。在服务器上,如果command.equals(“mykill”),然后获取由ID指示的进程并调用其销毁方法,并从列表中删除。还要从列表中删除陈旧的进程(无论是运行还是退出,只是为了让列表或地图变得过大)。

我使用run_command shell程序运行从客户机服务器的一些命令,这个外壳程序运行时通过套接字通信的服务器特定的命令。

我假设你没有使用腻子的一个很好的理由。我也假设你可以修改该服务器的代码。

请注意我没有尝试过这个我自己。我只是在给点意见。

+0

我使用putty,在客户端的putty中,我正在执行shell程序“run_command -s 192.168.1.91 -c ls “;在运行命令后,在服务器端我有一个Java程序,它接受这个命令,并在该服务器上运行,问题是我没有直接访问服务器,所以当我执行命令如尾巴-f从客户端,然后按ctr^c虽然壳是退出客户端的腻子,但命令仍然在服务器上运行,这需要加载...,我不能杀死任何进程,因为其他人可能已经在服务器端运行相同的命令...这是问题 – user2572969

+0

好吧..所以现在,如果你可以修改服务器上的Java程序,然后我建议可能会工作。 Java程序可能正在创建Process并启动它。请注意,java程序不是这样的命令行。因此,即使您能够将Ctrl C发送到服务器,也可能不会这样对待它。你将不得不包装过程,并给它一些自动递增的ID。在run_command客户端上打印该id(例如123)。当你输入命令为run_command -s 192.168.1.91 -c mykill 123时,它会终止进程123. – RuntimeException

+0

你不能打开另一个putty会话/窗口,并说run_command ps -ef | grep tail。一旦你有了pid,使用run_command kill id。我想你将不得不关闭以前的腻子会话/窗口。 – RuntimeException

0

可能是你正在寻找这个

killall `pidof ProcessName`