如何杀死在服务器上运行的进程

时间:2014-03-06 07:45:28

标签: java linux bash shell

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

  1. 有什么方法可以捕获ctrl ^ c,这样我就会发送一些杀死服务器上运行命令的消息

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

3 个答案:

答案 0 :(得分:1)

使用kill命令。有关详细信息,请参阅网址Kill Command for UNIX

答案 1 :(得分:1)

首先,我假设由于某种原因你不能在run_command事件上运行kill。如果可以,请忽略以下答案。

在服务器上,启动Process。将Process对象与ID(自动生成)一起包装。将包装器添加到List或Map。在客户端上向用户显示ID。

当用户想杀死进程时,发送类似“mykill”的内容。在服务器上,如果是command.equals(“mykill”),则获取id指示的进程并调用其destroy方法,并从列表中删除。同时从列表中删除过时的进程(无论是运行还是退出,只是为了防止列表或映射变得太大)。

  
    

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

  

我认为你有充分的理由不使用腻子。我还假设您可以修改该服务器的代码。

请注意我自己没试过。我只是在提出想法。

答案 2 :(得分:0)

可能你正在寻找这个

killall `pidof ProcessName`