如何终止远程 *nix 机器上的进程

如何终止远程 *nix 机器上的进程

我想在许多 *nix 机器上发出 kill 命令。我尝试做这样的事情:

rsh <remotemachine> ps -ef | grep <somepattern> | awk '{print $2}' | xargs n1 -t -i kill {}

但是这会在本地机器上发出 kill 命令,而不是在远程机器上。我也尝试过这样的方法:

rsh <remotemachine> kill $(ps -ef | grep <somepattern> | awk '{print $2}')

但这对我来说也不起作用。

答案1

假设您在有该实用程序的机器上工作,您还可以使用更具体的实用程序,如 pgrep 或 pkill。这意味着您不必使用 grep、awk 或 xargs。这将大大简化事情。

http://linux.about.com/library/cmd/blcmdl1_pkill.htm

rsh“远程机器”pkill 无论进程名称是什么

答案2

ssh 用户@someserver “ps -ef | grep | awk '{print $2}' | xargs n1 -t -i kill {}”

我拒绝使用除 SSH 之外的任何其他远程控制台方法。它几乎无处不在。

答案3

另外,我建议您使用 SSH。RSH 以明文形式发送密码,SSH 更安全。

无论哪种方式,您都需要转义本地 shell 将要解释的字符。即那些管道。以及单引号。以及美元符号。我认为花括号是可以的,但我可能会偏执地使用这两个。如果不这样做,则会导致 RSH 命令仅传递到第一个管道,然后该命令的输出在本地通过管道传输到 grep、awk 等。

这类命令让人很烦。试试这个:

rsh <remotemachine> ps -ef \| grep <somepattern> \| awk \'\{print \$2\}\' \| xargs n1 -t -i kill \{\}


——克里斯托弗·卡雷尔

答案4

在 Windows 机器上使用 taskkill、pskill 或其他命令可以实现这一点:)遗憾的是,如果不使用 ssh、rsh 或其他远程会话工具,则无法在 Linux/UNIX 机器上实现这一点。

相关内容