linux: ps 与 pidof 用法详解
2024-01-08 18:54:32
ps
描述
process status,用于查询进程状态。Linux 上进程有5种状态:
-
运行(正在运行或在运行队列中等待)
-
中断(休眠中,受阻,在等待某个条件的形成或接受到信号)
-
不可中断(收到信号不映醒和不可运行,进程必等待直到有中断发生)
-
僵死(进程已终止,但进程描述符存在,直到父进程调用 wait4() 系统调用后释放)
-
停止(进程收到 SIGSTOP,SIGSTP,SIGTIN,SIGTOU 信号后停止运行运行)
ps 工具标识进程的5种状态码:
- R 运行 runnable (on run queue)
- S 中断 sleeping
- D 不可中断 uninterruptible sleep (usually lO)
- Z 僵死 a defunct (“zombie”) process
- T 停止 traced or stopped
语法
ps [参数]
参数
-a 显示所有终端下执行的进程,包含其他用户的进程
-A 显示所有进程
-e 和A功能一样
-w 显示加宽可以显示较多的资讯
-H 显示树状结构,表示程序间的相互关系
-f 全格式显示进程,用ASCII字符显示树状结构,表达程序间的相互关系
-c 显示进程的真实名称
-x 显示所有进程,无论是否运行在终端上
-u 显示用户相关的进程或者与用户相关的属性
-r 只显示正在运行的进程
例子
# 显示较详细的资讯,u查看特定用户进程
ps -au
# 显示所有包含其他使用者的进程,x参数会显示没有控制终端的进程
pa -aux
au(x)的输出结果如下:
[root@node01 ~]# ps -aux |head
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 4.5 1.7 93292 13388 ? Ss 17:26 0:01 /usr/lib/systemd/systemd --switched-root --system --deserialize 18
root 2 0.0 0.0 0 0 ? S 17:26 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? I< 17:26 0:00 [rcu_gp]
root 4 0.0 0.0 0 0 ? I< 17:26 0:00 [rcu_par_gp]
root 5 0.0 0.0 0 0 ? I< 17:26 0:00 [slub_flushwq]
root 6 0.0 0.0 0 0 ? I 17:26 0:00 [kworker/0:0-events]
root 7 0.0 0.0 0 0 ? I< 17:26 0:00 [kworker/0:0H-events_highpri]
root 8 0.0 0.0 0 0 ? I 17:26 0:00 [kworker/0:1-events]
root 9 0.0 0.0 0 0 ? I 17:26 0:00 [kworker/u256:0-events_unbound]
输出结果解释如下:
USER: 进程拥有者
PID: pid
%CPU: 占用的CPU使用率
%MEM: 占用的内存使用率
VSZ: 占用的虚拟内存大小
RSS: 占用的内存大小
TTY: 终端的次要设备号码 (minor device number of try)
STAT: 进程的状态
R 运行 runnable (on run queue)
S 中断/静止 sleeping
D 不可中断 uninterruptible sleep (usually lO)
Z 僵死 a defunct ("zombie") process
T 暂停 traced or stopped
W 没有足够的内存分页可分配
< 高优先序的行程
N 低优先序的行程
L 有内存分页分配并锁在内存内(即时系统或hang I/O)
*START: 进程开始时间
TIME: 执行的时间
COMMND: 所执行的命令
# 根据内存使用降序排序
ps -aux -sort -pmem
# 根据内存降序、cpu升序
ps -aux -sort -pcpu,+pmem
# 树状显示进程,只要带有参数f即可
ps -axjf/-auxf
# 或者
pstree
pidof
描述
pidof 是Linux 系统中用来查找正在运行进程的进程号(pid)的工具, pidof 命令用于查找指定名称的进程的进程号 ld号
语法
pidof [选项] [参数(进程名称)]
Usage:
pidof [options] [program [...]]
Options:
-s, --single-shot return one PID only
-c, --check-root omit processes with different root
-x also find shells running the named scripts
-w, --with-workers show kernel workers too
-o, --omit-pid <PID,...> omit processes with PID
-S, --separator SEP use SEP as separator put between PIDs
-h, --help display this help and exit
-V, --version output version information and exit
参数
-s 仅返回一个进程号
-c 仅显示具有相同"root"目录的进程
-x 显示由脚本开启的进程
-o 指定不显示的进程ID
例子
[root@node01 ~]# pidof dockerd
1047
参考
https://linux.cn/article-4743-1.html
文章来源:https://blog.csdn.net/qq_36803941/article/details/135462514
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!