Linux系统进程管理
1、Linux进程管理在计算机中,数据的存储位置一般有两种:硬盘和内存。数据存储在硬盘中交文件,存储在内存中叫进程。对硬盘中数据进行操作时,我们要知道文件名称,对内存中数据进行操作时,需要知道进程号。
硬盘中文件与内存中进程之间的关系:在执行或处理硬盘中数据时,系统需要加载到内存中执行,文件的数据被加载到内存后,就变成了进程。
2、进程查看2.1 ps命令
描述:查看系统所有进程(静态显示)。
用法:ps [参数]
主要参数:
名称 | 说明 |
a | 显示当前终端下所有进程信息 |
u | 使用以用户为主的格式输出进程信息 |
x | 显示当前用户所有终端下进程信息 |
-e | 显示所有进程信息,环境变量 |
-f | 使用完整格式显示进程信息 |
-r | 显示正在运行的进程 |
-l | 长格式显示 |
au | 显示较详细信息 |
aux | 显示包含其他使用者的详细的进程信息 |
最常用:ps -ef / pe aux
(1)ps -ef
[root@test ~]# ps -ef
显示信息说明:
UID | PID | PPID | C | STIME | TTY | TIME | CMD |
用户ID | 进程ID | 父进程ID | 进程占用CPU百分比 | 进程启动时间 | 进程在哪个终端上运行。 | 该进程实际使用CPU运行的时间 | 命令名称及参数 |
TTY值:若与终端无关,则显示? 若为pts/0等,则表示由网络连接主机进程。
(2)ps aux
[root@test ~]# ps aux
显示信息说明:
USER | PID | %CPU | %MEM | VSZ | RSS | TTY | STAT | COMMAND |
用户名 | 进程ID | CPU占用率 | 内存占用率 | 虚拟资源使用率 | 物理资源使用率 | 进程在哪个终端运行(窗口号) | 状态 | 命令名称及参数 |
说明:linux系统进程状态:STAT状态位常见的状态字符
名称 | 说明 |
R | Running,运行进程,随时调运CPU、内存资源 |
S | 自睡眠进程,触发前处于待机状态(减少资源占用) |
D | 强制睡眠进程,两进程同时运行,内核限制其中一个处于停止状态 |
Z | 僵尸进程,进程终止时,向父进程提交返回值,释放资源,提交与释放之间的特殊状态 |
T | 停止进程 |
< | 高优先级的进程 |
N | 较低优先级的进程 |
L | 有些页被锁进内存 |
s | 进程的领导者(在它之下有子进程) |
l | 多线程,克隆线程(使用 CLONE_THREAD,) |
+ | 位于后台的进程 |
2.2 top命令
描述:查看系统所有进程(动态显示)。
用法:top [参数]
主要参数:
名称 | 说明 |
-d | 指定每两次屏幕信息刷新时间间隔 |
-p | 通过监控进程ID来监控某个进程状态 |
-q | 该选项使top无延迟进行刷新 |
-S | 指定累计模式 |
-s | 使top在安全模式下运行 |
-i | 使top不显示任何闲置或僵尸进程 |
-c | 显示整个命令行而不是只显示命令名称 |
Top命令结果说明:
(1)top
第一行:任务队列信息,同uptime结果相同
17:14:14当前时间;up 12 days, 18:01:系统运行时间;
2 user:当前登录用户数;load average: 0.00, 0.00, 0.00:系统负载信息
第二行:进程相关信息
total:进程总数 running:正常运行进程数;sleeping:睡眠状态进程数; stopped:停止的进程数 zombie:僵尸进程数
第三行:CPU使用情况
us:用户空间占用CPU百分比; sy:内核空间占用CPU百分比;
ni:改变过优先级的进程占CPU百分比; id:空闲CPU百分比;
wa:IO等待占用CPU百分比; hi:硬中断占用CPU百分比;
si:软中断占用CPU百分比; st:虚拟机占用百分比。
第四行:内存情况
Total:物理内存总量; used:使用的物理内存总量
free:空闲内存总量; buffers:用作内核缓存的内存量
第五行:swap内存情况
total:交换分区总量; used:使用的交换分区总量
free:空闲交换分区总量;
cached:缓冲的交换分区总量,内存中的内容被换出到交换分区,然后又被换入到内存,但使用过的交换分区尚未被覆盖,该数值即为这些内容已存在于内存中的交换区的大小,相应的内存再次被换出时可不必再对交换分区进行写入。
各进程的详细信息,各字段含义:
字段 | 含义 |
PID | 进程id |
USER | 进程所有者 |
PR | 优先级 |
NI | Nice值,负值优先级最高,正值表示低优先级 |
VIRT | 进程使用的虚拟内存总量 |
RES | 进程使用的、未被换出的物理内存大小 |
SHR | 共享内存大小 |
S | 进程状态(D=不可中断的睡眠状态,R=运行,S=睡眠,T=跟踪/停止,Z=僵尸进程) |
%CPU | CPU占有率 |
%MEM | 没存占有率 |
TIME+ | 进程占用CPU时间 |
COMMAND | 命令名/命令行 |
进程优先级:
系统对进程进行调动时,系统内核给每个进程一些计数器,内核选择拥有计数器最多的进程优先执行。Linux系统进程优先级范围-20~19,数值越小,优先级越高。(top命令执行后,执行r,输入进程id号,回车,在输入优先级号,回车,可修改进程优先级。)
nice -n -19 top #以-19的优先级执行top命令。
renice -n -19 -p 8888 #修改进程号8888的优先级为-19.
top其他常用操作:
(1)top #显式所有进程情况 (2)top -d 10 #每隔10秒显式所有进程情况 (3)top -c #显示进程的命令行详细信息(默认只有进程名) (4)top -p 8888 -p 9999 #显示pid是8888和9999两个进程信息 (5)top -d 2 -c -p 8888 #每隔2秒显示pid是8888的进程情况,并显式该3 进程查询
3.1 pgrep命令
描述:通过匹配其程序名,找到匹配的进程。
用法:pgrep [参数选项] 程序名
主要参数:
必要参数 | 作用 |
-l | 同时显示进程名和pid |
-o | 当匹配多个进程时,显示进程号最小的那个 |
-n | 当匹配多个进程时,显示进程号最大的那个 |
注:进程号越大,并不一定意味着进程的启动时间越晚。
(1)查看ssh进程
[root@test ~]# pgrep -l ssh
4 进程前后台调度相关命令(1)ctrl+z 将当前进程调入后台并停止执行
(2)jbos 查看后台任务列表
(3)fg n 将后台进程置于前台执行,n为jbos序号
(4)bg n 将后台暂停的进程恢复到后台执行,n为jbos序号
5 结束进程相关命令(1)ctrl+c 结束当前进程;
(2)kill命令
kill 进程pid #结束指定进程 kill -9 进程pid #强制结束指定进程 kill -9 $(ps -ef |grep 用户名) #强制结束指定用户进程 kill -u 用户名 #强制结束指定用户进 kill -l 显示kill所有信号选项 只有第9种信号(SIGKILL)才可以无条件终止进程,其他信号进程都有权利忽略。下面是常用的信号: HUP 1终端断线;INT 2 中断(同 Ctrl + C); QUIT 3 退出(同 Ctrl + \);TERM 15 终止; KILL 9 强制终止;CONT 18 继续(与STOP相反, fg/bg命令) STOP 19 暂停(同 Ctrl + Z)
(3)killall命令
killall命令用于杀死指定名字的进程 killall 程序名 #杀死指定名称的所有进程 killall nginx #杀死所有nginx进程 killall -9 ssh #杀死所有ssh进程
(4)pkill命令
pkill 和killall 应用方法差不多,也是直接杀死运行中的程式;如果你想杀掉单个进程,请用kill 来杀掉。
pkill -t tty1 #杀死终端1下的所有进程 pkill -kill -t pts/2 #踢用户 pkill -9 888 #彻底杀死进程888 pkill -u test #杀死指定用户test的所有进程 pkill -vu root #杀死不属于root用户的所有进程
个人公众号: