开发者社区> ~信~仰~> 正文

Linux ps命令

简介:
+关注继续查看

问题描述

NFS服务故障, ps到的进程显示状态为D, 无法使用 kill 杀掉.

了解ps

ps是process status的缩写, 用于列出系统中当前运行的进程快照.

root@kub3:/home/nfs# ps -aux | grep nfs
root      1937  0.0  0.0      0     0 ?        S<   Jul16   0:00 [nfsd4_callbacks]
root      1940  0.0  0.0      0     0 ?        D    Jul16   0:00 [nfsd]
root      1941  0.0  0.0      0     0 ?        D    Jul16   0:00 [nfsd]
root      1942  0.0  0.0      0     0 ?        D    Jul16   0:01 [nfsd]
root      1943  0.0  0.0      0     0 ?        D    Jul16   0:02 [nfsd]
root      1944  0.0  0.0      0     0 ?        D    Jul16   0:03 [nfsd]
root      1945  0.0  0.0      0     0 ?        D    Jul16   0:06 [nfsd]
root      1946  0.0  0.0      0     0 ?        D    Jul16   0:50 [nfsd]
root      1947  0.0  0.0      0     0 ?        D    Jul16   4:25 [nfsd]
root      3080  0.0  0.0      0     0 ?        S<   Jul16   0:00 [nfsiod]
root     10578  0.0  0.0  14224   920 pts/18   S+   11:57   0:00 grep --color=auto nfs
root     13380  0.0  0.2  37648 16904 ?        Ssl  Jul26   8:48 /nfs-client-provisioner
root     24271  0.0  0.0  16300   892 ?        D    Sep28   0:00 ls --color=auto /home/nfs/admin-d2069c-storage-mysql-2-pvc-ce20ad71-c2f4-11e8-b599-0050568eef9f/mysql/
root     25956  0.0  0.0   7316   700 pts/17   D+   10:55   0:00 rm -rf /home/nfs/admin-d2069c-storage-mysql-2-pvc-ce20ad71-c2f4-11e8-b599-0050568eef9f/

ps进程状态码

ps出的进程状态码共有5种:

R 运行 runnable :运行(正在运行或在运行队列中等待)
D uninterruptible sleep (usually IO), 不可中断(收到信号不唤醒和不可运行, 进程必须等待直到有中断发生)
S sleeping, 中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号)
T traced or stopped, 停止(进程收到SIGSTOP, SIGTSTP, SIGTTIN, SIGTTOU信号后停止运行运行)
Z a defunct (”zombie”) process, 僵死(进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放)

ps命令参数

-A 显示所有进程
c 显示进程的真实名称
-e 等于“-A”
e 显示环境变量
f 显示程序间的关系
-H 显示树状结构
r 显示当前终端的进程
T 显示当前终端的所有程序
u 指定用户的所有进程, 例如: ps -u root
-au 显示较详细的资讯
-aux 列出目前所有的正在内存中的程序
-ef 显示所有进程信息,连同命令行

D状态分析

Linux进程睡眠状态

Linux 进程有两种睡眠状态,一种 interruptible sleep,处在这种睡眠状态的进程可以通过给它发信号来唤醒,例如kill -9 ;一种 uninterruptible sleep,这种状态的进程不接受外来的任何信号,kill 不起作用, 无论是 kill -9 / kill -15,因为这种状态进程根本不接受这些信号的支配。

D状态原因

    处于 uninterruptible sleep 状态的进程通常是在等待 IO,比如磁盘 IO,网络 IO,其他外设 IO,如果进程正在等待的 IO 在较长的时间内都没有响应,很有可能有 IO 出了问题,可能是外设本身出了故障,也可能是比如挂载的远程文件系统已经不可访问了,我这里遇到的问题就是由 down 掉的 NFS 服务器引起的。

    正是因为得不到 IO 的相应,进程才进入了 uninterruptible sleep 状态,所以要想使进程从 uninterruptible sleep 状态恢复,就得使进程等待的 IO 恢复,比如如果是因为从远程挂载的 NFS 卷不可访问导致进程进入 uninterruptible sleep 状态的,那么可以通过恢复该 NFS 卷的连接来使进程的 IO 请求得到满足,除此之外,要想干掉处在 D 状态进程就只能重启整个 Linux 系统了。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
如何设置阿里云服务器安全组?阿里云安全组规则详细解说
阿里云安全组设置详细图文教程(收藏起来) 阿里云服务器安全组设置规则分享,阿里云服务器安全组如何放行端口设置教程。阿里云会要求客户设置安全组,如果不设置,阿里云会指定默认的安全组。那么,这个安全组是什么呢?顾名思义,就是为了服务器安全设置的。安全组其实就是一个虚拟的防火墙,可以让用户从端口、IP的维度来筛选对应服务器的访问者,从而形成一个云上的安全域。
20362 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
29763 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,大概有三种登录方式:
13859 0
阿里云服务器安全组设置内网互通的方法
虽然0.0.0.0/0使用非常方便,但是发现很多同学使用它来做内网互通,这是有安全风险的,实例有可能会在经典网络被内网IP访问到。下面介绍一下四种安全的内网互联设置方法。 购买前请先:领取阿里云幸运券,有很多优惠,可到下文中领取。
22808 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
21004 0
阿里云服务器ECS登录用户名是什么?系统不同默认账号也不同
阿里云服务器Windows系统默认用户名administrator,Linux镜像服务器用户名root
16923 0
+关注
119
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载