Java 如何终止服务器上运行的进程

Java 如何终止服务器上运行的进程,java,linux,bash,shell,Java,Linux,Bash,Shell,我使用run_命令shell程序从客户机在服务器上运行一些命令,这个shell程序通过套接字通信在服务器上运行特定的命令。在服务器端,我使用java程序在服务器上运行命令,通常对于像ls这样的命令,pwd它工作得很好,但是对于像“tail-f”这样的命令,虽然我按下了ctrl^c来停止命令,但它并没有在服务器端停止 有没有办法捕获ctrl^c,这样我就可以发送一些消息来终止服务器上正在运行的命令 要杀死服务器上的某个命令,我怎么能只杀死那个从客户端而不是其他任何客户端运行的特定命令呢 使用kil

我使用run_命令shell程序从客户机在服务器上运行一些命令,这个shell程序通过套接字通信在服务器上运行特定的命令。在服务器端,我使用java程序在服务器上运行命令,通常对于像ls这样的命令,
pwd
它工作得很好,但是对于像
“tail-f”
这样的命令,虽然我按下了
ctrl^c
来停止命令,但它并没有在服务器端停止

  • 有没有办法捕获ctrl^c,这样我就可以发送一些消息来终止服务器上正在运行的命令

  • 要杀死服务器上的某个命令,我怎么能只杀死那个从客户端而不是其他任何客户端运行的特定命令呢


  • 使用kill命令。有关更多信息,请参考URL

    首先,我假设出于某种原因,您无法在run\u命令上运行kill。如果可以,忽略下面的答案

    在服务器上,启动进程。将流程对象与ID一起包装(自动生成)。将包装器添加到列表或映射。在客户端上向用户显示ID

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

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

    我想你不用油灰是有原因的。我还假设您可以修改该服务器的代码


    请注意,我自己没有试过。我只是提出一些想法

    也许你在找这个

    killall `pidof ProcessName` 
    

    我使用putty,在客户端的putty中,我执行shell程序“run_command-s192.168.1.91-cls”;在运行命令之后,在服务器端我有一个java程序,它接受这个命令并在那个服务器上运行,问题是我不能直接访问服务器,所以当我从客户端执行命令,比如tail-f并按下ctr^c时,虽然shell在客户端的putty中退出,但命令仍然在服务器上运行,这需要加载,我不能杀死任何进程,因为其他进程可能在服务器端运行相同的命令。。。这就是问题所在。。现在,如果您可以修改服务器上的java程序,那么我的建议可能会奏效。java程序可能正在创建进程并启动它。请注意,java程序本身不是命令行。因此,即使您能够向服务器发送Ctrl C,它也可能不会这样对待它。您必须包装该进程并给它一些自动递增的ID。在run_命令客户端上打印该ID(例如123)。当您键入命令run_command-s 192.168.1.91-cmykill 123时,它将终止进程123。您不能打开另一个putty会话/窗口,并说run_command ps-ef | grep tail。一旦你有了pid,使用run#u命令kill id。我想你必须关闭上一个putty会话/窗口。我知道kill会完成任务,正如我已经提到的,我问了如何使用它,还有其他选项吗…#kill-9'id of process'我如何获得服务器上运行的进程的进程id,我还要求我需要捕获ctrl^c操作,每当用户执行ctlr^c操作时,就会发送自动终止命令。。