Linux命令 - ps命令
Linux命令 - ps命令
ps是process status的缩写,在Linux中 ps 命令用来列出系统中当前运行的那些进程。ps命令列出的是当前那些进程的快照,就是执行ps命令的那个时刻的那些进程,如果想要动态的显示进程信息,就可以使用top命令。
要对进程进行监测和控制,首先必须要了解当前进程的情况,也就是需要查看当前进程,而ps命令就是最基本同时也是非常强大的进程查看命令。使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等。总之大部分信息都是可以通过执行该命令得到的。
linux上进程有5种状态:
运行(正在运行或在运行队列中等待)
中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号)
不可中断(收到信号不唤醒和不可运行, 进程必须等待直到有中断发生)
僵死(进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放)
停止(进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行)
ps工具标识进程的5种状态码:
D 不可中断 uninterruptible sleep (usually IO)
R 运行 runnable (on run queue)
S 中断 sleeping
T 停止 traced or stopped
Z 僵死 a defunct (”zombie”) process
1.语法:
ps [参数]
2.功能:
用来显示当前进程的状态,类似于 windows 的任务管理器。
3.参数:
-a 显示所有终端机下执行的程序,除了阶段作业领导者之外。
a 显示现行终端机下的所有程序,包括其他用户的程序。
-A 显示所有程序。
-c 显示CLS和PRI栏位。
c 列出程序时,显示每个程序真正的指令名称,而不包含路径,参数或常驻服务的标示。
-C<指令名称> 指定执行指令的名称,并列出该指令的程序的状况。
-d 显示所有程序,但不包括阶段作业领导者的程序。
-e 此参数的效果和指定"A"参数相同。
e 列出程序时,显示每个程序所使用的环境变量。
-f 显示UID,PPIP,C与STIME栏位。
f 用ASCII字符显示树状结构,表达程序间的相互关系。
-g<群组名称> 此参数的效果和指定"-G"参数相同,当亦能使用阶段作业领导者的名称来指定。
g 显示现行终端机下的所有程序,包括群组领导者的程序。
-G<群组识别码> 列出属于该群组的程序的状况,也可使用群组名称来指定。
h 不显示标题列。
-H 显示树状结构,表示程序间的相互关系。
-j或j 采用工作控制的格式显示程序状况。
-l或l 采用详细的格式来显示程序状况。
L 列出栏位的相关信息。
-m或m 显示所有的执行绪。
n 以数字来表示USER和WCHAN栏位。
-N 显示所有的程序,除了执行ps指令终端机下的程序之外。
-p<程序识别码> 指定程序识别码,并列出该程序的状况。
p<程序识别码> 此参数的效果和指定"-p"参数相同,只在列表格式方面稍有差异。
r 只列出现行终端机正在执行中的程序。
-s<阶段作业> 指定阶段作业的程序识别码,并列出隶属该阶段作业的程序的状况。
s 采用程序信号的格式显示程序状况。
S 列出程序时,包括已中断的子程序资料。
-t<终端机编号> 指定终端机编号,并列出属于该终端机的程序的状况。
t<终端机编号> 此参数的效果和指定"-t"参数相同,只在列表格式方面稍有差异。
-T 显示现行终端机下的所有程序。
-u<用户识别码> 此参数的效果和指定"-U"参数相同。
u 以用户为主的格式来显示程序状况。
-U<用户识别码> 列出属于该用户的程序的状况,也可使用用户名称来指定。
U<用户名称> 列出属于该用户的程序的状况。
v 采用虚拟内存的格式显示程序状况。
-V或V 显示版本信息。
-w或w 采用宽阔的格式来显示程序状况。
x 显示所有程序,不以终端机来区分。
X 采用旧式的Linux i386登陆格式显示程序状况。
-y 配合参数"-l"使用时,不显示F(flag)栏位,并以RSS栏位取代ADDR栏位 。
-<程序识别码> 此参数的效果和指定"p"参数相同。
--cols<每列字符数> 设置每列的最大字符数。
--columns<每列字符数> 此参数的效果和指定"--cols"参数相同。
--cumulative 此参数的效果和指定"S"参数相同。
--deselect 此参数的效果和指定"-N"参数相同。
--forest 此参数的效果和指定"f"参数相同。
--headers 重复显示标题列。
--help 在线帮助。
--info 显示排错信息。
--lines<显示列数> 设置显示画面的列数。
--no-headers 此参数的效果和指定"h"参数相同,只在列表格式方面稍有差异。
--group<群组名称> 此参数的效果和指定"-G"参数相同。
--Group<群组识别码> 此参数的效果和指定"-G"参数相同。
--pid<程序识别码> 此参数的效果和指定"-p"参数相同。
--rows<显示列数> 此参数的效果和指定"--lines"参数相同。
--sid<阶段作业> 此参数的效果和指定"-s"参数相同。
--tty<终端机编号> 此参数的效果和指定"-t"参数相同。
--user<用户名称> 此参数的效果和指定"-U"参数相同。
--User<用户识别码> 此参数的效果和指定"-U"参数相同。
--version 此参数的效果和指定"-V"参数相同。
--widty<每列字符数> 此参数的效果和指定"-cols"参数相同。
4.常用范例:
例一:显示所有进程信息
命令:ps -A
[root@localhost ~]# ps -APID TTY TIME CMD1 ? 00:00:02 systemd2 ? 00:00:00 kthreadd3 ? 00:00:00 rcu_gp4 ? 00:00:00 rcu_par_gp6 ? 00:00:00 kworker/0:0H-kblockd9 ? 00:00:00 mm_percpu_wq10 ? 00:00:00 ksoftirqd/0……省略部分结果2897 pts/0 00:00:00 bash2928 pts/0 00:00:00 ps
例二:显示指定用户信息
命令:ps -u root
[root@localhost ~]# ps -u rootPID TTY TIME CMD1 ? 00:00:02 systemd2 ? 00:00:00 kthreadd3 ? 00:00:00 rcu_gp4 ? 00:00:00 rcu_par_gp6 ? 00:00:00 kworker/0:0H-kblockd9 ? 00:00:00 mm_percpu_wq10 ? 00:00:00 ksoftirqd/0……省略部分结果2897 pts/0 00:00:00 bash2953 ? 00:00:00 sleep2956 pts/0 00:00:00 ps
例三:显示所有进程信息,连同命令行
命令:ps -ef
查看进程的父进程ID可以使用ef。
[root@localhost ~]# ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 09:30 ? 00:00:02 /usr/lib/systemd/systemd --switched-root --system --deserialize 17
root 2 0 0 09:30 ? 00:00:00 [kthreadd]
root 3 2 0 09:30 ? 00:00:00 [rcu_gp]
root 4 2 0 09:30 ? 00:00:00 [rcu_par_gp]
root 6 2 0 09:30 ? 00:00:00 [kworker/0:0H-kblockd]
root 9 2 0 09:30 ? 00:00:00 [mm_percpu_wq]
root 10 2 0 09:30 ? 00:00:00 [ksoftirqd/0]
……省略部分结果
root 2892 2116 0 09:43 ? 00:00:00 /usr/libexec/gnome-terminal-server
root 2897 2892 0 09:43 pts/0 00:00:00 bash
root 2978 971 0 09:46 ? 00:00:00 sleep 60
root 2979 2897 0 09:46 pts/0 00:00:00 ps -ef
显示信息说明:
- UID:用户ID 。
- PID:进程ID 。
- PPID:父进程ID 。
- C:CPU用于计算执行优先级的因子。数值越大,表明进程是CPU密集型运算,执行优先级会降低;数值越小,表明进程是I/O密集型运算,执行优先级会提高。
- STIME:进程启动的时间 。
- TTY:完整的终端名称。
- TIME:CPU时间。
- CMD:启动进程所用的命令和参数。
例四:查找特定进程
命令:ps -ef | grep server
[root@localhost ~]# ps -ef | grep server
root 2283 2116 0 09:32 ? 00:00:00 /usr/libexec/gnome-shell-calendar-server
root 2473 2390 0 09:32 ? 00:00:00 /usr/libexec/evolution-calendar-factory-subprocess --factory all --bus-name org.gnome.evolution.dataserver.Subprocess.Backend.Calendarx2390x2 --own-path /org/gnome/evolution/dataserver/Subprocess/Backend/Calendar/2390/2
root 2509 2495 0 09:32 ? 00:00:00 /usr/libexec/evolution-addressbook-factory-subprocess --factory all --bus-name org.gnome.evolution.dataserver.Subprocess.Backend.AddressBookx2495x2 --own-path /org/gnome/evolution/dataserver/Subprocess/Backend/AddressBook/2495/2
root 2892 2116 0 09:43 ? 00:00:01 /usr/libexec/gnome-terminal-server
root 3014 2897 0 09:50 pts/0 00:00:00 grep --color=auto server
例五:将目前属于自己这次登入的 PID 与相关信息列示出来
命令:ps -l
在预设的情况下, ps 仅会列出与目前所在的 bash shell 有关的 PID 而已,所以, 当我使用 ps -l 的时候,只有三个 PID。
[root@localhost ~]# ps -l
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
0 S 0 2897 2892 0 80 0 - 6970 - pts/0 00:00:00 bash
0 R 0 3047 2897 0 80 0 - 11414 - pts/0 00:00:00 ps
显示信息说明:
- F :这个程序的旗标 (flag), 4 代表使用者为 super user。
- S :程序的状态 (STAT),关于各 STAT 的意义将在内文介绍。
- UID:程序被该 UID 所拥有。
- PID:就是这个程序的 ID。
- PPID:则是其上级父程序的ID。
- C:CPU 使用的资源百分比。
- PRI:这个是 Priority (优先执行序) 的缩写,详细后面介绍。
- NI:是 Nice 值,在下一小节我们会持续介绍。
- ADDR:是 kernel function,指出该程序在内存的那个部分。如果是个 running的程序,一般就是 “-”。
- SZ:使用掉的内存大小。
- WCHAN:目前这个程序是否正在运作当中,若为 - 表示正在运作。
- TTY:登入者的终端机位置。
- TIME:使用掉的 CPU 时间。
- CMD:所下达的指令为何。
例六:列出目前所有的正在内存当中的程序
命令:ps aux
查看进程的CPU占用率和内存占用率可以使用aux。
[root@localhost ~]# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.1 0.5 245616 10152 ? Ss 09:30 0:02 /usr/lib/systemd/systemd --switched-root --system --deserial
root 2 0.0 0.0 0 0 ? S 09:30 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? I< 09:30 0:00 [rcu_gp]
root 4 0.0 0.0 0 0 ? I< 09:30 0:00 [rcu_par_gp]
root 6 0.0 0.0 0 0 ? I< 09:30 0:00 [kworker/0:0H-kblockd]
root 9 0.0 0.0 0 0 ? I< 09:30 0:00 [mm_percpu_wq]
root 10 0.0 0.0 0 0 ? S 09:30 0:00 [ksoftirqd/0]
……省略部分结果
root 2897 0.0 0.3 27880 5736 pts/0 Ss 09:43 0:00 bash
root 2995 0.0 0.0 0 0 ? I 09:48 0:00 [kworker/0:0-events]
root 3071 0.0 0.0 0 0 ? I 09:53 0:00 [kworker/0:2-ata_sff]
root 3095 0.0 0.0 7496 852 ? S 09:56 0:00 sleep 60
root 3103 0.0 0.2 58908 3924 pts/0 R+ 09:57 0:00 ps aux
显示信息说明:
- USER:该进程是由哪个用户产生的。
- PID:进程的ID号。
- %CPU:该进程占用CPU资源的百分比,占用越高,进程越耗费资源。
- %MEM:该进程占用物理内存的百分比,占用越高,进程越耗费资源。
- VSZ:该进程占用虚拟内存的大小,单位KB。
- RSS:该进程占用实际物理内存的大小,单位KB。
- TTY:该进程是在哪个终端中运行的。若与终端机无关,则显示 ?,tty1-tty7代表本地控制台终端,tty1-tty6是本地的字符界面终端,tty7是图形终端,pts/0-255代表虚拟终端。
- STAT:进程状态。常见的状态有:R:运行、S:睡眠、T:停止状态、s:包含子进程、+:位于后台。
- START:该进程的启动时间。
- TIME:该进程占用CPU的运算时间,注意不是系统时间。
- COMMAND:产生此进程的命令名。
例七:列出类似程序树的程序显示
命令:ps -axjf
[root@localhost ~]# ps -axjfPPID PID PGID SID TTY TPGID STAT UID TIME COMMAND0 2 0 0 ? -1 S 0 0:00 [kthreadd]2 3 0 0 ? -1 I< 0 0:00 \_ [rcu_gp]2 4 0 0 ? -1 I< 0 0:00 \_ [rcu_par_gp]2 6 0 0 ? -1 I< 0 0:00 \_ [kworker/0:0H-kblockd]2 9 0 0 ? -1 I< 0 0:00 \_ [mm_percpu_wq]2 10 0 0 ? -1 S 0 0:00 \_ [ksoftirqd/0]……省略部分结果2116 2625 2625 2625 ? -1 Ssl 0 0:00 \_ /usr/libexec/gvfsd-metadata2116 2892 2892 2892 ? -1 Ssl 0 0:02 \_ /usr/libexec/gnome-terminal-server2892 2897 2897 2897 pts/0 3343 Ss 0 0:00 \_ bash2897 3343 3343 2897 pts/0 3343 R+ 0 0:00 \_ ps -axjf1 2142 2141 2141 ? -1 Sl 0 0:00 /usr/bin/gnome-keyring-daemon --daemonize --login1 2271 2258 2146 tty2 2146 Sl 0 0:00 /usr/libexec/ibus-x11 --kill-daemon1 2399 2398 2398 ? -1 S<l 0 0:04 /usr/bin/pulseaudio --start1 2469 2146 2146 tty2 2146 Sl+ 0 0:00 /usr/libexec/gsd-printer1 2544 2146 2146 tty2 2146 Sl+ 0 0:01 /usr/bin/vmtoolsd -n vmusr --uinputFd 31 2624 2624 2624 ? -1 Ssl 0 0:00 /usr/libexec/fwupd/fwupd1 2794 2794 2794 ? -1 Ss 0 0:01 /usr/libexec/sssd/sssd_kcm --uid 0 --gid 0 --logger=files
例八:找出与 cron 与 syslog 这两个服务有关的 PID 号码
命令:ps aux | egrep '(cron|syslog)'
[root@localhost ~]# ps aux | egrep '(cron|syslog)'
dbus 884 0.0 0.3 94324 7124 ? Ssl 09:30 0:00 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation --syslog-only
root 1301 0.0 0.4 211564 8552 ? Ssl 09:30 0:00 /usr/sbin/rsyslogd -n
root 1317 0.0 0.1 23512 2192 ? Ss 09:30 0:00 /usr/sbin/crond -n
gdm 1798 0.0 0.2 85036 5080 ? Ssl 09:30 0:00 /usr/bin/dbus-daemon --session --address=systemd: --nofork --nopidfile --systemd-activation --syslog-only
root 2150 0.0 0.3 85524 5932 ? Ssl 09:32 0:00 /usr/bin/dbus-daemon --session --address=systemd: --nofork --nopidfile --systemd-activation --syslog-only
root 3367 0.0 0.1 12324 2424 pts/0 R+ 10:03 0:00 grep -E --color=auto (cron|syslog)
例九:分页查看进程
命令:ps -aux |more
[root@localhost ~]# ps -aux |more
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.1 0.5 245616 10152 ? Ss 09:30 0:02 /usr/lib/systemd/systemd --switched-root --system --deserial
ize 17
root 2 0.0 0.0 0 0 ? S 09:30 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? I< 09:30 0:00 [rcu_gp]
root 4 0.0 0.0 0 0 ? I< 09:30 0:00 [rcu_par_gp]
root 6 0.0 0.0 0 0 ? I< 09:30 0:00 [kworker/0:0H-kblockd]
root 9 0.0 0.0 0 0 ? I< 09:30 0:00 [mm_percpu_wq]
root 10 0.0 0.0 0 0 ? S 09:30 0:00 [ksoftirqd/0]
root 11 0.0 0.0 0 0 ? I 09:30 0:00 [rcu_sched]
root 12 0.0 0.0 0 0 ? S 09:30 0:00 [migration/0]
root 13 0.0 0.0 0 0 ? S 09:30 0:00 [watchdog/0]
root 14 0.0 0.0 0 0 ? S 09:30 0:00 [cpuhp/0]
root 16 0.0 0.0 0 0 ? S 09:30 0:00 [kdevtmpfs]
root 17 0.0 0.0 0 0 ? I< 09:30 0:00 [netns]
root 18 0.0 0.0 0 0 ? S 09:30 0:00 [kauditd]
root 19 0.0 0.0 0 0 ? S 09:30 0:00 [khungtaskd]
root 20 0.0 0.0 0 0 ? S 09:30 0:00 [oom_reaper]
--更多--
例十:把所有进程显示出来,并输出到ps001.txt文件
命令:ps -aux > ps001.txt
例十一:输出指定的字段
命令:ps -o pid,ppid,pgrp,session,tpgid,comm
[root@localhost ~]# ps -o pid,ppid,pgrp,session,tpgid,commPID PPID PGRP SESS TPGID COMMAND2897 2892 2897 2897 3800 bash3800 2897 3800 2897 3800 ps
Linux命令 - ps命令相关推荐
- 监控io性能, free命令, ps命令, 查看网络状态, linux下抓包
2019独角兽企业重金招聘Python工程师标准>>> 监控io性能 free命令 ps命令 查看网络状态 linux下抓包 --- 监控io性能 查看磁盘 iostat 和sar属 ...
- linux系统ps命令的参数a与-a表示的讨论
前言 在刘遄老师所著的<linux就该这么学>中ps 命令用于查看系统中的进程状态,格式为"ps [参数]".书中对于ps命令有一定的介绍,为了加强自己的理解,所以我在 ...
- Linux操作系统PS命令详细 解析
http://blog.chinaunix.net/space.php?uid=20564848&do=blog&id=74654 Linux操作系统PS命令详细 解析 要对系统中进程 ...
- linux中的ps fx命令,Linux下ps命令详解 Linux下ps命令的详细使用方法
Linux下ps命令详解 1. 运行(正在运行或在运行队列中等待) 2. 中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号) 3. 不可中断(收到信号不唤醒和不可运行, 进程必须等待直到有中断 ...
- Linux中ps命令ps -aux 和ps -ef 参数解释
Linux中ps命令ps -aux 和ps -ef 参数解释 一.ps命令 1.1 ps -aux 1.2 ps -ef 一.ps命令 ps命令用于显示当前进程的状态,类似于 windows 的任务管 ...
- linux ps -ef命令输出详解,Linux下ps命令的10个基本例子
在Linux下ps命令是用于查看系统上运行的进程的最基本的命令之一.它提供了当前进程的同时,如用户ID,CPU使用率,内存使用率,命令名称等,它不显示实时数据,如top或htop命令的详细信息.但是, ...
- linux环境下ps命令行,Linux下ps命令详解 Linux下ps命令的详细使用方法
Linux下ps命令详解 Linux上进程有5种状态:1. 运行(正在运行或在运行队列中等待) 2. 中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号) 3. 不可中断(收到信号不唤醒和不可运 ...
- <Linux>《Linux 之 ps 命令详解大全(含实用命令)》
<Linux 之 ps 命令详解大全(含实用命令)> 1 常用命令 1.1 显示所有当前进程 1.2 显示所有当前进程 1.3 显示所有当前进程 1.4 根据用户过滤进程 1.5 根据 C ...
- 【Linux】ps命令
Linux中的ps命令是Process Status的缩写.ps命令用来列出系统中当前运行的那些进程.ps命令列出的是当前那些进程的快照,就是执行ps命令的那个时刻的那些进程,如果想要动态的显示进程信 ...
最新文章
- 如何在Java中将String转换为int?
- Sentinel Dashboard 中修改规则同步到 Nacos
- 顶部标题栏(四)自定义ActionBar风格和样式
- 图片日志:泛型的作用/hashset的内部实现/常见运行期异常
- [AssertionError: nput tensor input format are different]
- Google 资深软件工程师 LeetCode 刷题笔记首次公开
- c# 结构体 4字节对齐_【专题4:平时遇到的问题】 之 【3.由结构体字节对齐引发的通信故障】...
- CuteEditor 5.0 的使用
- Maven项目设置仓库下载位置
- 关于Keil4 转到 Keil5以后的一些错误解决
- TensorFlow2.0:自定义层与自定义网络
- 【三次握手、四次挥手流程】及【长短链接区别】
- 数据结构顺序栈基本操作(C/C++实现)
- 99%的人不知道!收藏这些自媒体实用网站,让你月薪提高5k
- python基础(八):进制转换及python中的进制转换方法
- 宝塔面板无法安装php,宝塔面板安装php失败
- 超详细的Elasticsearch高性能优化实践
- ajax将监听器值赋值servlet,Java面试问题
- 创业很难,有没有人愿意分享自己一些创业的点子,想法,尽量详细一点?
- gerrit git 邮箱不匹配的问题
热门文章
- [DSP 日常记录] #1 冯诺依曼结构、哈佛结构与改进型哈佛结构
- PointGet的一生
- 【Python】什么是递归函数?
- menu.ctrl.php,对pyqt5之menu和action的使用详解
- java ios 3des_3DES在Android、Ios 和Java 平台的加密解密
- Java虚拟机这一块 —— JVM 调优和深入了解性能优化
- 百度地图绘制工具类 DrawingManager.js 源码
- Linux常用指令学习(篇一):文件处理指令
- 【点宽专栏】模型投资的风险和矛盾
- 怎么找网图本人_怎么通过照片找人-请问如何用相片在网络查找个人资料就是利用相 – 手机爱问...