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 系统了。

目录
相关文章
|
11天前
|
监控 Linux
如何检查 Linux 内存使用量是否耗尽?这 5 个命令堪称绝了!
本文介绍了在Linux系统中检查内存使用情况的5个常用命令:`free`、`top`、`vmstat`、`pidstat` 和 `/proc/meminfo` 文件,帮助用户准确监控内存状态,确保系统稳定运行。
94 6
|
12天前
|
Linux
在 Linux 系统中,“cd”命令用于切换当前工作目录
在 Linux 系统中,“cd”命令用于切换当前工作目录。本文详细介绍了“cd”命令的基本用法和常见技巧,包括使用“.”、“..”、“~”、绝对路径和相对路径,以及快速切换到上一次工作目录等。此外,还探讨了高级技巧,如使用通配符、结合其他命令、在脚本中使用,以及实际应用案例,帮助读者提高工作效率。
49 3
|
12天前
|
监控 安全 Linux
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景,包括 ping(测试连通性)、traceroute(跟踪路由路径)、netstat(显示网络连接信息)、nmap(网络扫描)、ifconfig 和 ip(网络接口配置)。掌握这些命令有助于高效诊断和解决网络问题,保障网络稳定运行。
37 2
|
19天前
|
缓存 监控 Linux
|
23天前
|
Linux Shell 数据安全/隐私保护
|
24天前
|
域名解析 网络协议 安全
|
6天前
|
运维 监控 网络协议
运维工程师日常工作中最常用的20个Linux命令,涵盖文件操作、目录管理、权限设置、系统监控等方面
本文介绍了运维工程师日常工作中最常用的20个Linux命令,涵盖文件操作、目录管理、权限设置、系统监控等方面,旨在帮助读者提高工作效率。从基本的文件查看与编辑,到高级的网络配置与安全管理,这些命令是运维工作中的必备工具。
34 3
|
30天前
|
运维 监控 网络协议
|
1月前
|
监控 Linux Shell
|
12天前
|
安全 网络协议 Linux
本文详细介绍了 Linux 系统中 ping 命令的使用方法和技巧,涵盖基本用法、高级用法、实际应用案例及注意事项。
本文详细介绍了 Linux 系统中 ping 命令的使用方法和技巧,涵盖基本用法、高级用法、实际应用案例及注意事项。通过掌握 ping 命令,读者可以轻松测试网络连通性、诊断网络问题并提升网络管理能力。
44 3
下一篇
无影云桌面