首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当我在远程主机上杀死进程时,为什么连接会中断?

当我在远程主机上杀死进程时,为什么连接会中断?
EN

Server Fault用户
提问于 2012-04-27 08:41:58
回答 2查看 466关注 0票数 0

我通过ssh登录到远程主机(debian),并执行如下命令

代码语言:javascript
复制
ssh user@remote_host "ps -ef | grep process_name | grep -v grep | awk {'print $2'} | xargs kill -9'

然后连接中断。

我平了远程主机,无法接收任何响应,就像网络没有连接一样。但是,当我重新启动远程主机(断电和开机)时,一切正常。我保证被杀死的进程只是我写的程序,它的父进程是"init“进程(如果进程在fg中运行,并且被杀死,那么一切都是正常的)。有没有人知道为什么会发生这种事?

EN

回答 2

Server Fault用户

发布于 2012-04-27 09:05:57

ps -ef | grep process_name | grep -v grep不仅给出了你想要杀死什么的pid,而且给出了其他信息,比如uid,进程的命令,这些命令可能会意外地杀死一些东西。更不幸的是,它的ppid (父pid,因为你是1)也显示出来,然后你知道会发生什么。

你可以试试

代码语言:javascript
复制
ssh user@remote_host "pkill process_name"

代码语言:javascript
复制
ssh user@remote_host "ps -eo pid,cmd | grep process_name | grep -v grep | cut -d' ' -f2 | xargs kill -9"

或者你可以先得到它的输出:

代码语言:javascript
复制
ssh user@remote_host "ps -ef | grep process_name | grep -v grep"

然后自己过滤pid。

票数 1
EN

Server Fault用户

发布于 2012-04-27 09:16:45

我不知道你展示给我们的命令竟然没有出错。正如在另一个答案中提到的,您将太多的东西传递给xargs/kill,它们将其视为垃圾。

使用这样的方法只提取PID和杀死它。

代码语言:javascript
复制
ps -ef | grep process_name | grep -v grep | awk '{print $3}' | xargs kill -9
票数 1
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/384014

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档