jwb*_*ley 9 kill process-management
可能的重复:
如果“kill -9”不起作用怎么办?
我想问这个有点晚了,但供将来参考;
今天,在一位客户报告说使用 ssh 连接很慢并且执行命令也很慢(有些根本不起作用)之后,我被要求查看服务器。
登录后,我可以立即输入,所以我不认为这是延迟或带宽饱和等网络问题(因为我发现这往往与您的 ssh 体验直接相关)。我首先尝试运行top
,一分钟没有发生任何事情后,我用 CTRL+C 取消了此操作。提示挂起等待top
启动。
free -m
在我取消之前,也只是在提示处挂了一分钟或更长时间。
df -h
确实执行了,并向我展示了 60% 的可用磁盘空间(我想知道是否有一些应用程序出问题并用日志填满了磁盘)。
dmesg
也不会执行。
我执行了tail -n 50 /var/log/message
,遗憾的是我不再有输出,但看起来有一个严重的问题。以十六进制打印的大量内存位置,大概它们的内容(难以理解的杂乱无章)在右侧。它与我在谷歌上找到的这个日志中的输出非常相似,试图找到一个类似的例子,除了在右手栏中的大部分行中都包含“ext4”,也许是文件系统错误?
跑步tail -n 50 /var/log/syslog
我看到在所有的记忆疯狂中间,这里重复了几行,说对Info procname:pid blocked for more than 120 seconds
.
我执行ps aux
并查看输出,直到找到一个 CPU 使用率为 299% 的进程;
ps aux | grep procname
procuser 8279 299 0.0 479064 41916 pts/6 Sl+ 08:05 548:31 /path/to/procname procbox 6390 6394 6395 0
Run Code Online (Sandbox Code Playgroud)
所以这个过程看起来很疯狂,但我无法执行任何与内存相关的命令(有或没有 sudo)。例如free -m
,或top
。我可以cat /proc/meminfo
看到 40GB 的 RAM 中有大约 5GB 可用。
我试过了,kill PID
但挂了几分钟后我放弃了。我kill -9 PID
再次尝试,同样的事情。我只能假设这个进程太忙了,以至于它无法回答来自内核的终止消息?我试过了renice 19 PID
,kill -9 PID
但这也不起作用,renice
会运行,只是挂起。
最后需要硬重启,这并不理想。由于服务器上的专业应用程序,文件现在已损坏等。我还有什么其他选择?
有没有办法简单地停止一个过程?而不是发送 SIGTERM,只是完全停止代码的处理,或类似的?
我执行了 tail -n 50 /var/log/message ,遗憾的是我不再有输出,但看起来有一个严重的问题。以十六进制打印的大量内存位置,大概它们的内容(难以理解的杂乱无章)在右侧。
它几乎可以是任何东西,这些内核转储的内容对于了解它是什么很重要。
例如,您可能遇到了硬件问题,例如磁盘不再响应请求。尝试运行已经缓存在 RAM 中的程序可以正常工作,而运行需要从磁盘读取的程序可能会挂起。
也可能是您遇到了内核错误或其他一些驱动程序问题,或者您的 RAM 中出现了错误的位翻转,或者几乎任何其他坏硬件。如果驱动程序锁定了内核中的特定资源,然后遇到错误或错误并且无法正确解锁它,那么任何其他试图获取该锁的驱动程序或系统调用都会挂起。
它可能不是内核中的错误。例如,当使用 lvm 或 dmsetup 工具来管理磁盘时,您会得到这种行为。它们都可以挂起设备,结果是“只要设备挂起,对该设备的任何进一步 I/O 都将被推迟”。然后尝试访问该设备的程序将简单地阻塞在内核中。您可以使用“dmsetup suspend”手动触发此操作,或者当 LVM 工具遇到错误时,我看到磁盘意外处于挂起状态。
如果这是一次性的事情,请不要担心。如果它再次发生,请尝试仔细记录内核输出,以便找出其原因。第一次故障转储将是最重要的。如果这种情况经常发生并且您无法获得输出,请考虑使用netconsole将内核输出直接发送到另一台机器。
归档时间: |
|
查看次数: |
6481 次 |
最近记录: |