1. ps
process,查看瞬间进程状态(查看实时进程用top命令),ps支持3种格式的命令
1) Unix风格,选项以-开头。
2) BSD风格,选项不能以-开头。
3) GNU长选项,选项以–开头。
3种格式的命令可以混用,但可能会出现冲突。灵活使用各选项可以显示自己想要的输出。
缺省情况下,ps选择所有与当前用户具有相同有效用户ID(euid = EUID)且与调用者位于同一终端关联的进程。 它显示进程ID(pid = PID),与进程关联的终端(tname = TTY),以[DD-] hh:mm:ss格式(time = TIME)累积的CPU时间和可执行文件名称(ucmd = CMD)。 默认情况下,输出未排序。
hollowman@hollowman-F117:~$ ps
PID TTY TIME CMD
40964 pts/3 00:00:00 bash
40970 pts/3 00:00:00 ps
常用选项梳理
#Unix风格选项
-A, -e 显示所有进程
-a 显示所有TTY值存在的进程,除去bash和TTY终端等进程
-u 显示有效的用户,当后面跟<UID>时含义同-U。
-d 显示所有进程,除去bash和TTY终端等进程
-F 完整格式
-f 完整格式,包含命令行
#BSD风格选项
a 显示所有TTY值存在的进程,包括其他用户
u 面向用户的格式,其输出会包含用户名字段
#含义相同的选项
-x, x 显示没有控制终端的进程,默认一般不显示没有控制终端的进程
-t, t/T, --tty <tty> 显示与指定终端关联的进程
-p, p, --pid <PID> 显示指定进程编号的进程
-r, r 显示运行进程
-w, w 不限制输出宽度,默认不显示超出设备宽度以外的输出。
-U, U, --user <UID> 显示指定用户的进程
#含义相近的选项
-l, l 显示长格式/BSD长格式
-j, j 显示工作格式/BSD工作格式
进程状态:
- R(运行): 进程正在运行或在运行队列中等待。
- S(中断): 进程处于休眠中,当某个条件形成后或者接收到信号时,则脱离该 状态。
- D(不可中断): 进程不响应系统异步信号,即便用kill命令也不能将其中断。
- Z(僵死): 进程已经终止,但进程描述符依然存在, 直到父进程调用wait4()系统函数后将进程释放。
- T(停止): 进程收到停止信号后停止运行
- N: 低优先级
- <: 高优先级
- L: 被锁进内存
- s: 包含子进程
- l: 多线程
常用输出格式
1.打印所有进程信息
ps -ef
ps aux #ps auxg和ps –e u输出效果相同
2.打印进程树
ps -ejH
ps axjf
3.打印线程信息
ps -eLf
ps axms
2.top
动态显示进程
top命令前5行动态显示系统运行总体参数:
- 第1行:系统时间、运行时间、登录终端数、系统负载(3个数值分别为1分钟、5分钟、15分钟内的平均值,数值越小意味着负载越低)。
- 第2行:进程总数、运行中的进程数、睡眠中的进程数、停止的进程数、僵死的进程数。
- 第3行:用户占用资源百分比、系统内核占用资源百分比、改变过优先级的进程资源百分比、空闲的资源百分比、…。
- 第4行:物理内存总量、内存空闲量、内存使用量、作为内核缓存的内存量。
- 第5行:虚拟内存总量、虚拟内存空闲量、虚拟内存使用量、已被提前加载的内存量。
hollowman@hollowman-F117:~$ top
top - 08:22:14 up 29 min, 1 user, load average: 0.30, 0.38, 0.29
任务: 369 total, 1 running, 364 sleeping, 2 stopped, 2 zombie
%Cpu(s): 2.5 us, 1.1 sy, 0.0 ni, 96.5 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 15927.6 total, 9434.5 free, 2515.6 used, 3977.5 buff/cache
MiB Swap: 16384.0 total, 16384.0 free, 0.0 used. 12548.7 avail Mem
进程 USER PR NI VIRT RES SHR %CPU %MEM TIME+ COMMAND
8116 hollowm+ 20 0 2625220 170932 112556 S 11.6 1.0 1:32.42 Web Content
1217 root 20 0 1305940 124032 79068 S 9.3 0.8 0:53.46 Xorg
2115 hollowm+ 20 0 3432152 128492 95312 S 6.6 0.8 0:27.11 ukui-kwin_x11
2813 hollowm+ 20 0 610712 79224 59364 S 4.0 0.5 0:07.34 mate-terminal
7654 hollowm+ 20 0 5857576 807552 509932 S 4.0 5.0 1:11.70 firefox
1916 hollowm+ 9 -11 1412544 19728 14980 S 2.0 0.1 0:29.13 pulseaudio
2826 hollowm+ 20 0 2224664 70504 30216 S 1.7 0.4 0:28.18 kylin-kmre-apps
410 root 19 -1 119080 47784 46228 S 1.3 0.3 0:23.46 systemd-journal
.......
3. pstree
process tree,显示进程树。
几个常用选项
-s, --show-parents 显示所选进程的父进程
-t, --thread-names 显示完整的线程名称,默认不显示线程名称(只显示线程数量)
-c, --compact-not 不对完全相同的子树进行压缩
-p, --show-pids 显示 PID;隐含启用 -c 选项
-a, --arguments 显示命令行参数
-V, --version 显示版本信息
实例:
#显示进程树,默认从pid为1的进程开始,也就是systemd进程。
hollowman@hollowman-F117:~$ pstree
systemd─┬─ModemManager───2*[{ModemManager}]
├─NetworkManager───2*[{NetworkManager}]
├─accounts-daemon───2*[{accounts-daemon}]
├─acpid
├─agetty
├─avahi-daemon───avahi-daemon
├─bluetoothServic───{bluetoothServic}
... ...
#显示pid为889的进程树(压缩完全相同的子树)
hollowman@hollowman-F117:~$ pstree 889
udisksd───4*[{udisksd}]
#显示pid为889的进程树,且不对完全相同的子树进行压缩
hollowman@hollowman-F117:~$ pstree 889 -c
udisksd─┬─{udisksd}
├─{udisksd}
├─{udisksd}
└─{udisksd}
#显示pid为889的进程树,并包含线程名称
hollowman@hollowman-F117:~$ pstree 889 -t
udisksd─┬─{cleanup}
├─{gdbus}
├─{gmain}
└─{probing-thread}
#显示pid为889的进程树及进程号
hollowman@hollowman-F117:~$ pstree 889 -p
udisksd(889)─┬─{udisksd}(916)
├─{udisksd}(1006)
├─{udisksd}(1058)
└─{udisksd}(1113)
#显示pid为889的进程树及进程号,并显示父进程名及进程号
hollowman@hollowman-F117:~$ pstree -s 889 -p
systemd(1)───udisksd(889)─┬─{udisksd}(916)
├─{udisksd}(1006)
├─{udisksd}(1058)
└─{udisksd}(1113)
#显示pid为1543的进程树,并显示命令行参数
hollowman@hollowman-F117:~$ pstree 1543 -a
smbd --foreground --no-process-group
├─cleanupd --foreground --no-process-group
├─lpqd --foreground --no-process-group
└─smbd-notifyd --foreground --no-process-group
#显示hollowman用户的进程及其进程树
hollowman@hollowman-F117:~$ pstree hollowman
4.pidof
查询某个指定服务的全部进程的pid值,一个服务对应1至多个进程,但每个进程都只有唯一pid值。
命令语法:pidof [选项] [服务名]
hollowman@hollowman-F117:~$ pidof code #code是一个代码编辑器的运行程序名
32690 32674 32659 31492 31481 31479 31451 31450 31447
5. kill
终止对应pid值的服务进程
命令语法:kill [选项] [pid]
hollowman@hollowman-F117:~$ kill 31450
6.killall
终止指定服务/程序所对应的所有进程
kill只能杀死1个进程,包含多个进程的服务需要多次使用kill,而killall则可以一次性杀死服务对应的所有进程
命令语法:killall [选项] [服务/程序名]
hollowman@hollowman-F117:~$ killall code #关闭code程序