一、进程简介
1. 进程概述
百度:进程是正在执行的一个程序或命令,每一个进程都是一个运行的实体,都有自己的地址空间,
并占用一定的系统资源。
通俗:正在运行的程序或命令
2. 进程管理作用
判断服务器健康状态
查看系统中所有进程
杀死进程
二、进程查看命令
1. ps 命令
查看系统进程
命令
ps aux:查看系统中所有进程,使用BSD操作系统格式
ps -le:查看系统中所有进程,使用Linux标准命令格式
选项
-a:显示一个终端的所有进程,除了会话引线
-u:显示进程的归属用户及内存的使用情况
-x:显示没有控制终端的进程
-l:长格式显示,显示更加详细的信息
-e:显示所有进程,和-A作用一致
命令输出
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:产生此进程的名字
2. pstree 命令
查看进程树,父进程与子进程
命令
pstree [选项]
选项
-p:显示进程的pid
-u:显示进程的所属用户
3. top 命令
动态查看所有进程,用于检查系统健康状态
命令
top [选项]
选项
-d 秒数:指定top命令每隔几秒更新。默认为三秒
-b:使用批处理模式输出。一般和-n选项合用
-n 次数:指定top命令执行的次数
在top命令的交互模式中可执行的命令
?或h:显示交互模式的帮助
P: 以CPU使用率排序,默认就是以此排序
M: 以内存的使用率排序
N: 以pid排序
q: 退出top
top命令第一行信息:任务队列信息
内容 | 说明 |
---|---|
11:11:11 | 系统当前时间 |
up 15 day, 1:10 | 系统的运行时间,本机已经运行15天1小时10分钟 |
2 users | 当前登录了两个用户 |
load average: 0.00,0.00,0.00 | 系统在之前1分钟,5分钟,15分钟的平均负载。双核CPU不应该大于2,四核CPU不应该大于4 |
第二行信息:进程信息
内容 | 说明 |
---|---|
tasks:95 total | 系统中的进程总数 |
1 running | 正在运行的进程数 |
90 sleeping | 睡眠的进程 |
0 stopped | 正在停止的进程 |
0 zombie | 僵尸进程。如果不是0,需要手工检查僵尸进程 |
第三行信息:CPU信息
内容 | 说明 |
---|---|
CPU(s): 0.1%us | 用户模式占用的CPU百分比 |
0.1%sy | 系统模式占用的CPU百分比 |
0.0%ni | 改变过优先级的用户进程占用的CPU百分比 |
99.7%id | 空闲CPU的CPU百分比 |
0.1%wa | 等待输入/输出的进程的占用CPU百分比 |
0.0%hi | 硬中断请求服务占用的CPU百分比 |
0.1%si | 软中断请求服务占用的CPU百分比 |
0.0%st | st(steal time)虚拟时间百分比,就是当有虚拟机时,虚拟CPU等待时机CPU的时间百分比 |
第四行信息:物理内存信息
内容 | 说明 |
---|---|
mem:?k total | 物理内存总量,单位KB |
?k used | 已经使用的物理内存数量 |
free | 空闲的物理内存数量 |
buffers | 作为缓冲(加速数据写入)的内存数量 |
第五行信息:交换分区信息
内容 | 说明 |
---|---|
swap : total | 交换分区的总大小 |
used | 已经使用的交互分区的大小 |
free | 空闲交换分区的大小 |
cached | 作为缓存(加速数据读取)的交互分区的大小 |
三、杀死进程
1. kill 命令
杀死单一进程
命令
kill -l:查看系统中可杀死的进程
kill -1 pid:重启进程
kill -9 pid:杀死进程
信号类型
信号代号 | 信号名称 | 说明 |
---|---|---|
1 | SIGHUP | 该信号让进程立即关闭,然后重新读取配置文件之后重启 |
2 | SIGINT | 程序终止信号,用于终止前台进程。相当于输出Ctrl+c快捷键 |
8 | SIGFPE | 在发生致命的算数运算错误时发出,不仅包括浮点运算错误,还包括溢出及除数为0等其他所有的算术的错误 |
9 | SIGKILL | 用来立即结束程序的运算,本信号不能被阻塞、处理和忽略。一般用于强制终止进程 |
14 | SIGALRM | 时钟定时信号,计算的是实际的时间或时钟时间.alarm函数使用该信号 |
15 | SIGTERM | 正常结束的信号,kill命令的默认信号。有时如果进程以及发生问题,这个信号是无法正常终止进程的,我们才会尝试SIGKILL信号,也就是9信号 |
18 | SIGCONT | 该信号可以让暂停的进程恢复执行,本信号不能被阻断 |
19 | SIGSTOP | 该信号可以暂停前台进程,相当于输入Ctrl+z。本信号不能被阻断 |
2. killall 命令
按进程名杀死进程,终止一组进程
命令
killall [选项] [信号] 进程名
选项
-i:交互式,询问是否要杀死某个进程
-I:忽略进程名的大小写
3. pkill 命令
按照进程名终止进程,杀死一组进程
命令
pkill [选项] [信号] 进程名
选项
-t 终端号:按照终端号踢出用户
练习:按照终端号踢出用户
使用xshell远程连接两个终端
[root@catyuan ~]# w #查看系统当前登录的信息,w表示当前登录
[root@catyuan ~]# pkill -9 -t pts/2 #杀死从pts/2登录的进程
四、进程优先级
1. 简介
Linux系统是一个多用户、多任务的操作系统,linux系统中运行着非常多的进程。但是
CPU在同一个时钟周期内只能运算一个指令。进程优先级决定了每个进程处理的先后顺序
2. 两个优先级
PRI:代表priority
NI:代表nice
这两个值都是优先级,数字越小代表该进程的优先级越高。
系统直接生效的是PRI,但是用户不能直接修改这个,用户只能修改NI,去影响优先级
3. 修改NI
NI的值得范围是-20到19
普通用户调整NI值的范围是0到19,而且只能调整自己的进程
普通用户只能调高NI值,而不能降低,如原本NI值为0,则只能调整为大于0
root用户才能设定进程NI为负值,而且可以调整任何用户的进程
PRI(最终值)=PRI(原始值)+NI
用户只能修改NI的值,而不能直接修改PRI
4. nice 命令
可以给新执行的命令直接赋予NI值,但是不能修改已经存在进程的NI值
命令
nice [选项] 命令
选项
-n NI值:给命令赋予NI值
5. renice 命令
renice命令是修改已经存在进程的NI值得命令
命令
renice [优先级] PID