Linux系统的进程管理
在我们进入IT行业之后,会听到许多关于进程的话题,从最简单的杀死一个进程,终止一个进程,到深入一些的父进程创造子进程等等。那么什么是进程呢?简单来说进程就是一个正在运行中的程序。
-
静态查看进程PS
语法 ps aux 参数: ps a 显示现行终端机下的所有程序 ps u 以用户为主的格式来显示程序状况。 ps x 不以终端机来区分。
USER: 运行进程的用户
PID: 进程ID
%CPU: CPU占用率
%MEM: 内存占用率
VSZ: 占用虚拟内存
RSS: 占用实际内存
TTY: 进程运行的终端
STAT: 进程状态
START: 进程的启动时间
TIME: 进程占用CPU的总时间
COMMAND: 进程文件,进程名
当需要查看某一条件最高或最低的进程时,使用 ps aux --sort %条件
ps aux --sort -%cpu 以CPU占比降序排列
ps aux --sort %cpu 以CPU占比升序排列
当需要查看进程的个别条件时,使用ps axo 条件(用逗号隔开)
查看进程的父子关系 ps -ef
PPID进程的父进程
-
动态查看进程 top
有图可知,TOP分为上下两部分
上部分第一行
上部分第二行
上部分第三行
上部分第四行
上部分第五行
下部分
VIRT:virtual memory usage 虚拟内存(需要这些内存,但并没有占满。)
RES:resident memory usage 常驻内存(用了多少内存)
SHR:shared memory 共享内存(1、除了自身进程的共享内存,也包括其他进程的共享内存2、共享内存大小公式:RES – SHR)
top小技巧
动态查看进程 top,像windows的任务管理器
top //回车,立刻刷新。按z彩色显示,按F,通过光标设置列的顺序。
top -d 1 //每1秒刷新。
top -d 1 -p 10126 查看指定进程的动态信息
top -d 1 -p 10126,1 查看10126和1号进程 -
使用信号控制进程
信号种类
给进程发送信号(kill -l列出所有支持的信号)
kill -编号 信号名
- SIGHUP 重新加载配置
- SIGINT 键盘中断Ctrl+C
- SIGQUIT 键盘退出Ctrl+\,类似SIGINT
- SIGKILL 强制终止,无条件
- SIGTERM 终止(正常结束),缺省信号
- SIGCONT 继续
- SIGSTOP 暂停
20)SIGTSTP 键盘暂停Ctrl+Z
进程优先级nice
每个CPU在一个时间点上只能处理一个进程,通过时间片段化技术,来同时运行多个程序。在top中显示的优先级有两个,PR值和nice值
NI: 实际nice值;PR(+20): 将nice级别显示为映射到更大优先级队列,-20映射到0,19映射到39
nice 值越高: 表示优先级越低,例如+19;nice 值越低: 表示优先级越高,例如-20
修改进程的nice值。renice 优先级 PID
作业控制jobs
当有进程占用终端,我们无法输入大部分命令时,我们就需要将其放入后台执行。
& 放在命令后面表示设置此进程为后台进程
jobs 查看后台进程
fg 将后台进程调到前台
bg 将后台停止的进程启动
kill 1 终止PID为1的进程
kill %1 作业序号为1的后台程序