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天前
|
Web App开发 Linux 网络安全
工作中常用到的Linux命令
工作中常用到的Linux命令
|
11天前
|
Web App开发 Java Linux
Linux之Shell基本命令篇
Linux之Shell基本命令篇
Linux之Shell基本命令篇
|
8天前
|
NoSQL Linux Shell
常用的 Linux 命令
常用的 Linux 命令
30 9
|
1天前
|
安全 Linux 开发工具
Linux中可引起文件时间戳改变的相关命令
【4月更文挑战第12天】Linux中可引起文件时间戳改变的相关命令
9 0
|
3天前
|
域名解析 网络协议 Linux
Linux 中的 Nslookup 命令怎么使用?
【4月更文挑战第12天】
22 6
Linux 中的 Nslookup 命令怎么使用?
|
3天前
|
运维 网络协议 Unix
18.系统知识-Linux常用命令
18.系统知识-Linux常用命令
|
4天前
|
网络协议 Ubuntu Linux
Linux 下 TFTP 服务搭建及 U-Boot 中使用 tftp 命令实现文件下载
Linux 下 TFTP 服务搭建及 U-Boot 中使用 tftp 命令实现文件下载
|
4天前
|
Linux Go
Linux命令Top 100驱动人生! 面试必备
探索Linux命令不再迷茫!本文分10部分详解20个基础命令,带你由浅入深掌握文件、目录管理和文本处理。 [1]: <https://cloud.tencent.com/developer/article/2396114> [2]: <https://pan.quark.cn/s/865a0bbd5720> [3]: <https://yv4kfv1n3j.feishu.cn/docx/MRyxdaqz8ow5RjxyL1ucrvOYnnH>
48 0
|
7天前
|
缓存 运维 监控
Linux系统监控利器:探索常用命令及数据保存技巧
Linux系统监控利器:探索常用命令及数据保存技巧
26 4
Linux系统监控利器:探索常用命令及数据保存技巧
|
10天前
|
Linux 索引
linux 文件查找 和文件管理常用命令
linux 文件查找 和文件管理常用命令
19 0