进程
ps
功能
ps 用来查看进程状态
不过这种查看是静态的 也就是只会显示 你输入命令那一刻的进程状态
不会像top那样是动态变化的
ps命令支持三种使用的语法格式:
UNIX 风格,选项可以组合在一起,并且选项前必须有“-”连字符
BSD 风格,选项可以组合在一起,但是选项前不能有“-”连字符
GNU 风格的长选项,选项前有两个“-”连字符
这几种风格可以混用,但是可能会发生冲突。
输入语法
ps[参数]
参数如下
ps 没有属性参数的时候显示的是同一终端terminal下所有的进程
ps T 显示同一个终端terminal下的所有进程 输出信息更丰富了一些
ps a 显示同一控制终端tty下的所有进程 结果按照进程id来排序 输出的关键属性有 进程状态 进程控制终端
ps c 显示进程的名称 不显示路径
ps -A 显示所有用户的所有进程 包括没有控制终端的进程 结果按照进程id排序 输出的关键属性有进程的控制终端 和ps -aux 相比 它输出的信息没有那么全面 比如 没有cpu和mem列
ps -e 等于“ps -A”
ps f 显示同一个控制终端tty下的进程 同时用树状结构的显示程序间的关系
ps -a 显示所有用户进程 不包括没有控制终端的进程 结果按照进程id排序
ps -u 显示本用户下所有进程 不包括没有控制终端的进程 结果按照进程id排序 而且显示的进程信息很全面
ps -u [用户名] 显示指定用户名下的所有进程 不包括没有控制终端的进程 结果按照进程id排序 而且显示的进程信息很全面 比如 ps -u root
ps -x 显示本用户所有进程 包括没有控制终端的进程 结果按照进程id排序
ps -au 显示当前用户下所有的进程 不包括没有控制终端的进程
ps -ax 显示所有用户的进程 包括没有控制终端的进程 输出信息里面没有USER用户列
ps -ux 显示当前用户下所有进程 包括没有控制终端的进程
ps -aux 显示所有用户的所有进程 包括没有控制终端的进程
ps -aux --sort -pcpu 显示所有的进程 并且按照cpu使用率排序
ps -aux --sort -pmem 显示所有的进程 并且按照cpu使用率排序
ps -auxf 显示所有用户的所有进程 包括没有控制终端的进程 同时以树形结构显示进程间的关系
ps -e f (注意e和f中间有空格)显示所有进程 包括没有控制终端的进程 同时会用树状结构的显示程序间的关系
输出信息
USER - 运行该过程的用户
PID 就是这个程序的 ID
PPID 则是其上级父程序的ID
%CPU- 进程 cpu 利用率。
%MEM - 进程驻留集大小占计算机物理内存的百分比。
VSZ - 进程的虚拟内存大小 KiB。
RSS- 进程正在使用的物理内存的大小。
PRI 这个是 Priority (优先执行序) 的缩写
NI 这个是 Nice 值
ADDR 这个是 kernel function,指出该程序在内存的那个部分。如果是个 running的程序,一般就是 "-"
TTY 登入者的终端机位置
TIME 使用掉的 CPU 时间。
CMD 所下达的指令为何
STAT 代表这个程序的状态
ps工具标识进程的5种状态码:
D 不可中断
R 运行
S 中断
T 停止
Z 僵死
在上面这些状态吗后面还会有下面这些后缀
< 优先级高的进程
N 优先级较低的进程
L 有些页被锁进内存;
s 进程的领导者(在它之下有子进程);
l 多进程的(使用 CLONE_THREAD, 类似 NPTL pthreads);
+ 位于后台的进程组;
实例
实例1
kylechen@kyle:~$ ps
PID TTY TIME CMD
17796 pts/0 00:00:00 bash
24667 pts/0 00:00:00 ps
实例2
kylechen@kyle:~$ ps -T
PID SPID TTY TIME CMD
17796 17796 pts/0 00:00:00 bash
24673 24673 pts/0 00:00:00 ps
实例3
kylechen@kyle:~$ ps a
PID TTY STAT TIME COMMAND
1444 tty2 Ssl+ 0:00 /usr/lib/gdm3/gdm-x-session --run-script env GNOME_SH
1446 tty2 Sl+ 19:57 /usr/lib/xorg/Xorg vt2 -displayfd 3 -auth /run/user/1
1457 tty2 Sl+ 0:00 /usr/lib/gnome-session/gnome-session-binary --session
1590 tty2 Sl+ 31:32 /usr/bin/gnome-shell
1628 tty2 Sl 0:00 ibus-daemon --xim --panel disable
1632 tty2 Sl 0:00 /usr/lib/ibus/ibus-dconf
1636 tty2 Sl 0:00 /usr/lib/ibus/ibus-x11 --kill-daemon
1708 tty2 Sl+ 0:01 /usr/lib/gnome-settings-daemon/gsd-power
1710 tty2 Sl+ 0:00 /usr/lib/gnome-settings-daemon/gsd-print-notification
1711 tty2 Sl+ 0:00 /usr/lib/gnome-settings-daemon/gsd-rfkill
1714 tty2 Sl+ 0:00 /usr/lib/gnome-settings-daemon/gsd-screensaver-proxy
1717 tty2 Sl+ 0:03 /usr/lib/gnome-settings-daemon/gsd-sharing
1720 tty2 Sl+ 0:00 /usr/lib/gnome-settings-daemon/gsd-smartcard
后面的篇幅太长 ...略掉
实例4
kylechen@kyle:~$ ps a
PID TTY STAT TIME COMMAND
1444 tty2 Ssl+ 0:00 /usr/lib/gdm3/gdm-x-session --run-script env GNOME_SH
1446 tty2 Sl+ 19:57 /usr/lib/xorg/Xorg vt2 -displayfd 3 -auth /run/user/1
1457 tty2 Sl+ 0:00 /usr/lib/gnome-session/gnome-session-binary --session
1590 tty2 Sl+ 31:32 /usr/bin/gnome-shell
1628 tty2 Sl 0:00 ibus-daemon --xim --panel disable
1632 tty2 Sl 0:00 /usr/lib/ibus/ibus-dconf
1636 tty2 Sl 0:00 /usr/lib/ibus/ibus-x11 --kill-daemon
1708 tty2 Sl+ 0:01 /usr/lib/gnome-settings-daemon/gsd-power
1710 tty2 Sl+ 0:00 /usr/lib/gnome-settings-daemon/gsd-print-notification
1711 tty2 Sl+ 0:00 /usr/lib/gnome-settings-daemon/gsd-rfkill
1714 tty2 Sl+ 0:00 /usr/lib/gnome-settings-daemon/gsd-screensaver-proxy
1717 tty2 Sl+ 0:03 /usr/lib/gnome-settings-daemon/gsd-sharing
1720 tty2 Sl+ 0:00 /usr/lib/gnome-settings-daemon/gsd-smartcard
后面的篇幅太长 ...略掉
实例5
kylechen@kyle:~$ ps a
PID TTY STAT TIME COMMAND
1444 tty2 Ssl+ 0:00 /usr/lib/gdm3/gdm-x-session --run-script env GNOME_SH
1446 tty2 Sl+ 19:57