目录
管理进程
概念
程序、进程、线程
进程分类
查看进程
ps命令
unix 风格
bsd风格
GNU风格
top命令
格式
统计信息区
进程信息区:显示了每个进程的运行状态
kill命令
作用
格式
管理进程
概念
程序、进程、线程
程序: 二进制文件,文件存储在磁盘中,例如 /usr/bin/ 目录下
进程:进程是已启动的可执行程序的运行实例
进程和程序并不是一一对应的关系,相同的程序运行在不同的数据集上就是不同的进程
线程:是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单
位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行
执行不同的任务。
一个进程可以拥有多个线程,而一个线程同时只能被一个进程所拥有
线程不能单独执行,但是每一个线程都有程序的入口、执行序列以及程序出口,它必须组成进程才
能被执行
进程分类
查看进程
ps命令
作用: ps 显示某个时间点的程序运行情况
格式
参数
ps - 参数
unix 风格
-a :显示当前shell的进程,不是所有用户的进程
-u 用户名称 : 显示指定用户的shell进程
有效用户id,运行的用户id
没有-x
-e : 系统中所有进程
-l :显示更详细的内容,长格式
-w 数字 : 显示行宽
-f : 更完整输出
bsd风格
x :无字符终端进程
a :有字符终端进程
u :利用用户信息进行归类
f : 显示进程的层级关系
GNU风格
ps -o(指定) %cpu,%mem,command :用于查看进程状态的命令,它可以提供有关当前正在运行的进程的各种详细信息,-o 用于指定输出的格式,即决定要显示哪些关于进程的信息以及以何种顺序显示。
ps ax --sort -%cpu -o %cpu,pid :以 CPU 使用率和进程 ID 这两个字段的形式展示排序后的进程列表并按照 CPU 使用率进行降序排序
示例
[root@server ~]# ps -l
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
0 S 0 32343 32342 0 80 0 - 56088 do_wai pts/2 00:00:00 bash
4 R 0 33566 32343 0 80 0 - 56375 - pts/2 00:00:00 ps
说明:
F:代表这个程序标志(process flags),说明这个程序的权限。常见号码有:4表示此程序的权限为
root;1表示此子程序仅进行复制(fork)而没有实际执行(exec)
S:代表这个程序的状态(STAT),主要的状态有:
R(Running):该程序正在运作中;
S(Sleep):该程序目前正在睡眠状态(idle),但可以被唤醒;
D:不可被唤醒的睡眠状态,通常可能是在等待I/O的情况;
T:停止状态(stop),可能是在工作控制(后台暂停)或traced状态;
Z(Zombie):僵尸状态,程序已经终止但却无法被移除至记忆体外。
+:位于后台的进程组
UID/PID/PPID:代表此程序被该UID所拥有/程序的PID号码/此程序的父进程PID号码。
C:代表CPU使用率,单位为百分比;
PRI/NI:Priority/Nice的缩写,代表此程序被CPU所执行的优先顺序,数值越小代表该程序越快被CPU执
行。
ADDR/SZ/WCHAN:都与内存有关,ADDR是kernel funcition,指出该程序在内存的哪个部分,如果是
running的程序,一般会显示-。SZ代表此程序用掉多少内存,WCHAN表示目前程序是否运作中,若为-表示正
在运行。
TTY:登入者的终端机位置,若为远程终端登入则使用动态终端界面(pts/n)。
TIME:使用掉的CPU时间,即此程序实际花费CPU运作的时间。
CMD:触发此进程的指令是什么。
# 查看所有用户执行的进程的详细信息
[root@server ~]# ps -le
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
4 S 0 1 0 0 80 0 - 44776 do_epo ? 00:00:01 systemd
1 S 0 2 0 0 80 0 - 0 - ? 00:00:00 kthreadd
1 I 0 3 2 0 60 -20 - 0 - ? 00:00:00 rcu_gp
# 查看当前用户的进程
[root@server ~]# ps -u
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1280 2.2 0.2 237304 5408 tty1 Ss+ 15:54 0:00 -bash
root 1415 0.1 0.2 237172 5092 pts/0 Ss 15:55 0:00 -bash
root 1452 0.0 0.2 268484 4008 pts/0 R+ 15:55 0:00 ps -u
[root@localhost ~]# ps aux | less
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 2164 648 ? Ss 08:47 0:00
init [5]
#############################
说明:
USER: 运行进程的用户
PID: 进程ID
%CPU: CPU占用率
%MEM: 内存占用率
VSZ: 占用虚拟内存
RSS: 占用实际内存 驻留内存
TTY: 进程运行的终端
STAT: 进程状态 man ps (/STATE)
R 运行
S 可中断睡眠 Sleep
D 不可中断睡眠
T 停止的进程
Z 僵尸进程
X 死掉的进程
s 进程的领导者,父进程
< <优先级较高的进程
top命令
格式
参数
N N优先级的进程
+ +表示是前台的进程组
l 以线程的方式运行
START: 进程的启动时间
TIME: 进程占用CPU的总时间
COMMAND: 进程文件,进程名
#############################
[root@server ~]# ps -le
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
4 S 0 1 0 0 80 0 - 44776 do_epo ? 00:00:01 systemd
# 自定义显示字段
[root@server ~]# ps axo user,pid,ppid,%mem,command
USER PID PPID %MEM COMMAND
root 1 0 0.7 /usr/lib/systemd/systemd --switched-root --system
root 2 0 0.0 [kthreadd]
root 3 2 0.0 [rcu_gp]
# 查看进程树
[root@server ~]# pstree
# 查看指定进程的PID
[root@server ~]# ps aux | grep sshd
[root@server ~]# cat /run/sshd.pid
# 查看指定进程的PID
[root@server ~]# pgrep -l sshd
[root@server ~]# pidof sshd
# 查看指定进程的PID
[root@server~]# pidof sshd
top命令
格式
top [-d 数字] | [-bnp]
-d:后面可以接秒数,就是整个进程界面更新的秒数,默认是5秒
-b:以批次的方式执行top,还有更多的参数可用。通常会搭配数据流重定向来将批处理的结果输出为文件。
-n:与-b搭配,进行几次top的输出结果
-i:不显示闲置或者僵死的进程信息
-c:显示进程的整个命令路径,而不是只显示命令名称
-s:使top命令在安全模式下运行,此时top的交互式指令被取消,避免潜在危险
-p:指定某些个PID来进行查看检测
[root@localhost ~]# top -d 1
[root@localhost ~]# top -d 1 -p id 查看指定进程的动态信息
top 的输出可以分为 统计信息区 和 进程信息区 两个部分,即前 5 行为统计信息区,后面为进程信息
区。
统计信息区
第一行为任务队列信息:top - 17:21:03 up 4:32, 5 users, load average: 0.19, 0.08,
0.06
17:21:03表示当前系统时间;
up 4:32表示系统已经启动4小时32分钟了;
5 users表示当前登录系统的用户数;
load average: 0.19, 0.08, 0.06表示系统1分钟、5分钟、15分钟前到现在的平均负载(如果是1
表示满负载)
第二行:Tasks: 483 total, 3 running, 480 sleeping, 0 stopped, 0 zombie
483 total进程的总数
3 running正在运行的进程数
480 sleeping处于休眠状态的进程数
0 stopped停止的进程数
0 zombie僵死的进程数
第三行:%Cpu(s): 0.3 us, 0.7 sy, 0.0 ni, 99.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0
st
0.3 us表示用户进程占用CPU的百分比
0.7 sy系统进程占用CPU的百分比;
0.0 ni用户进程空间内改变过优先级的进程占用CPU的百分比
99.0 id空闲CPU占用的百分比
0.0 wa代表I/Owait表示等待输入、输出的进程占用CPU的百分比;
0.0 hi表示cpu服务于硬件中断所耗费的时间总额
0.0 si表示cpu服务于软件中断所耗费的时间总额;
0.0 st表示虚拟机被hypervisor偷去的cpu时间
另外,如果是多内核设备,可按下数字键“1”来切换成不同cpu的负载率。
第四行、第五行
MiB Mem : 1790.0 total, 1278.5 free, 240.5 used, 271.0 buff/cache
MiB Swap: 2048.0 total, 2048.0 free, 0.0 used. 1393.8 avail Mem
total系统的内存大小
free目前空余内存大小
used已经使用的内存大小
#############################
进程信息区:显示了每个进程的运行状态
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 179104 13540 8728 S 0.0 0.7 0:01.22 systemd
PID:进程的id
USER:进程所有者的用户名
PR:进程优先级
NI:nice值。负值表示高优先级,正值表示低优先级
VIRT:进程使用的虚拟内存总量,单位为KB
RES:进程使用的、未被换出的物理内存大小,单位KB
SHR:共享内存大小,单位KB
S:进程状态,D表示不可中断的睡眠状态,R表示运行状态,S表示睡眠状态,T表示跟踪/停止,Z表示僵
死进程
%CPU:上次更新到现在的CPU时间占用百分比
%MEM:进程占用的物理内存百分比
TIME+:进程总计使用的CPU时间,单位为1/100秒
COMMAND:正在运行进程的命令名或者命令路径
可以在 RHEL9 中安装 epel-release 源后安装 htop ,是 top 的升级版
kill命令
作用
进程信号的控制工具
2,3,9,15,18,19,20--进程的信号
2,3,9,15,18,19,20--进程的信号
格式
kill 进程 id
killall 进程名 --可删除所有进程