程序和进程的关系
程序–>软件
-
程序是保存在外部存储介质(如硬盘,光盘)等中的可执行机器代码和数据的及静态集合
-
静态保存的代码
进程
-
加载到内存中的程序代码(计算机程序,有CPU运行)
-
动态执行的代码
-
父、子进程:每一个进程可以创建一个或多个进程
-
systemd为系统启动的第一个进程,PID号为1
-
守护进程
常驻内存,与终端无关的系统进程
-
用户进程
用户通过终端加载的进程
ps命令——查看静态的进程系统信息(report a snapshot of the current processes)
ps命令是linux系统中最常见的进程查看工具,主要用于显示包含当前运行的各进程完整信息的静态快照。通过不同的命令选项,可以选择性的查看进程信息。
- a:显示当前终端下的所有进程信息,包括其他用户的进程。与“x”选项结合时将显示系统中所有的进程信息
- u:使用以用户为主的格式输出进程信息。
- x:显示当前用户在所有终端下的进程信息
- ps -aux-完整格式输出所有进程//查看静态进程
- -e:显示系统内的所有进程信息
- -l:使用长格式信息进程信息
- -f:使用完整版的格式显示进程信息(显示父进程)
- -F:显示更完整格式的进程信息
- -H:以进程层级格式显示进程相关信息
下述输出信息中,第一行为列表标题,其中各字段的含义描述如下:
USER:启动该进程的用户账号的名称
PID:该进程在系统中的PID号,在当前系统中是唯一的
%CPU:CPU占用的百分比
%MEM:内存占用的百分比
VSZ:占用虚拟内存swap空间的大小
RSS:占用常驻内存物理内存的大小
TTY:表明该进程在哪个终端上运行。“?“表示进程不依赖终端或未知,是守护进程
STAT:显示了进程的当前的状态:D:(不可中断睡眠)、S:(可中断的睡眠)、R:(就绪或运行状态)、T:(中止状态)、Z:(僵死状态)、<:(高优先级进程)、N:(低优先级进程)、+:(前台进程组中的进程)、I:(多线程的进程)、s:(会话进程的首进程)
系统中有俩个终端一个是硬终端,另一个是软终端
僵尸进程:他活着的时候占用系统资源,他死了还会占用系统资源
START:启动该进程时间
TIME:当前进程所占用cpu的时间
COMMAND:启动该进程的命令的名称
若执行“ps -elf“命令,则将以长格式显示系统中的进程信息,并且显示内存较多。输出信息中还包括PPID列(表示对应进程的父进程的PID号)
直接执行不带任何选项的ps命令时,将只显示当前用户会话中打开的进程
[root@localhost ~]# ps
PID TTY TIME CMD
17138 pts/0 00:00:00 bash
17374 pts/0 00:00:00 ps
由于系统中运行的进程数量较多。需要查询某一个进程的信息时可以结合管道操作和grep命令进行过滤。
(1)ps aux | grep “进程名“
(2)ps -elf | grep “进程名“
(3)ps -C “进程名称“ --no-headers #通过命令来查找进程信息,–no-headers去掉查看的首行
进程优先级分类
ni:nice值,普通优先级,值越高优先级越高
pri:priority优先级,进程优先级,数据越大优先级越高
psr:processor CPU编号
rtprio:实时优先级
top命令——查看进程动态信息
top命令将会在当前终端以全名交互式的界面显示进程排名,及时跟踪包括CPU、内存等系统资源占用情况,默认情况下每三秒刷线一次。
top - 12:33:31 up 8:25, 3 users, load average: 0.00, 0.01, 0.05
top - 12:27:59 :系统当前时间
up 8:20:系统已运行时间
3 users:系统当前用户登录数
load average: 0.00, 0.01, 0.05 :系统负载平均值,1分钟内、5分钟内、15分钟内,参考尽量不要超过cpu核心数。
Tasks: 163 total, 1 running, 162 sleeping, 0 stopped, 0 zombie
Tasks: 162 total:系统总进程数
1 running:正在运行进程数
161 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
cpu占用百分比:
us:用户空间占用
sy:内核空间占用(系统空间占用)
ni:进程的优先级调度占用
id:cpu的空闲百分比
wa:I/O等待占用
hi:硬件中断占用
si:软件中断占用
st:虚拟化相关占用
Rt:实时变化
- [ ]
- [ ]
KiB Mem : 1865284 total, 704800 free, 399812 used, 760672 buff/cache
物理内存相关: 总内存空间 空闲内存 已用内存 缓存/缓冲占用
KiB Swap: 2097148 total, 2097148 free, 0 used. 1241464 avail Mem
虚拟内存相关: 总内存空间 空闲内存 已用内存 可使用内存空间
PID:进程号
USER:进程所有者的用户名
PR:优先级
NI:nice值。负载表示高优先级,正值表示低优先级
VIRT:进程使用的虚拟内存总量,单位kb
RES:进程使用的、未被换出的物理内存大小,单位kb
SHR:共享内存大小,单位kb
S:进程状态
%CPU:上次更新到现在的CPU时间占用百分比
%MEM:进程使用的物理内存百分比
TIME+:进程使用的CPU时间总计,单位1/100秒
Top命令:
常用选项:
-d:指定刷新的间隔时间,单位秒
-b:以批量处理模式操作(非交互),一般与-n同时使用
-n:指定循环显示的次数
-u:指定用户名
-p:指定进程号
(1)top -d 指定刷新的间隔时间
[root@localhost ~]# top -d 5
(2)top -b -n 以批量处理模式操作同时指定循环显示的次数
[root@localhost ~]# top -d -n2
注意:当CPU占用率过高时,不要再直接执行top命令查看,可以将信息存入一个文件内查看,以免CPU占用率过高导致崩溃。操作如下
[root@localhost ~]# top -b -n1 > /top.txt
[root@localhost ~]# cat /top.txt
(3)top -u指定用户名
[root@localhost ~]# top -u student
(4)top -p指定进程名
[root@localhost ~]# top -p 7767
在top命令的全屏操作界面中,可以按P键根据CPU占用情况对进程列表进行排序,或按M键根据内存占用情况进行排序,按N键根据启动时间进行排序,按h键可以获得top程序的在线帮助信息,按q键可以正常退出top程序。
常用交互命令
P:根据CPU使用百分比大小进行排序(默认进入时即为此排序)
M:根据驻留内存大小进行排序
T:根据累计时间进行排序
k:终止一个进程
q:退出程序
r:重新安排一个进程的优先级别(-20~19)(在top里一次性设置)
pgrep命令——查看特定进程信息
gprep命令正是用来查询特定进程信息的专用工具。使用pgrep命令可以根据进程的名称、运行该进程的用户、进程所在的终端等多种属性查询特定的PID号。
-l:显示进程名
-U:指定特定用户
-t:指定终端
-a:显示完整格式的进程名
-P pid:显示指定进程的子进程
搜索指定进程名称的PID
[root@localhost ~]# pidof sshd11263 7767 1010
pstree命令——用ASCII字符显示树状进程结构(display a tree of processes)
pstree命令可以输出linux系统中各进程的树状结构,判断出各进程之间的相互关系(父、子进程)。pstree命令默认情况下只显示各进程的名称
-p:选项使用时可以同时列出对应的PID号
-u:选项可以列出对应的用户名
-a:选项可以列出完整的命令信息。
[root@localhost ~]# pstreesystemd─┬─ModemManager───2*[{ModemManager}]
├─NetworkManager───2*[{NetworkManager}]
2*: 表示有俩个子进程(名字一样)