我使用run_command shell程序在客户机上的服务器上运行一些命令,这个shell程序通过套接字通信在服务器上运行特定命令。在服务器端,我使用java程序在服务器上运行命令,通常对于像ls这样的命令,pwd
它运行良好,但对于像"tail -f"
这样的命令,虽然我按ctrl^c
来停止命令,它不是在服务器端停止。
有什么方法可以捕获ctrl ^ c,这样我就会发送一些杀死服务器上运行命令的消息
在服务器上杀死一些命令,我怎么能只杀死从客户端而不是任何其他命令运行的特定命令
答案 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`