目录
一.程序和进程的关系
1.程序
- 保存在硬盘,光盘等介质中的可执行代码和数据
- 静态保存的代码
2.进程
- 在CPU及内存中运行的程序代码
- 动态执行的代码
- 父,子进程
- 每个程序可以创建一个或多个进程
二.查看进程信息
1.查看静态的进程统计信息 ps
[root@xlj1 -]# ps aux
常用选项
选项 | 说明 |
---|---|
-a | 显示当前终端下的所有进程信息,包括其他用户的进程 与"x"选项结合时将显示系统中所有的进程信息 |
-u | 使用以用户为主的格式输出进程信息 |
-x | 显示当前用户在所有终端下的进程信息 |
常用的选项组合
ps -aux 以简单列表的形式显示出进程信息,其中含义如下
USER | 启动该进程的用户账号的名称 |
PID | 该进程在系统中的数字ID号,在当前系统中是唯一的 |
%CPU | CPU占用的百分比 |
%MEM | 内存占用的百分比 |
VSZ | 该进程使用的虚拟内存量(KB) |
RSS | 该进程占用的物理内存量(KB) |
TTY | 表明该进程在哪个终端上运行。不是从终端启动的进程则显示为? |
STAT
D:系统守护进程
T:调式、程序执行一般停止
R:该程序目前正在运作,或者是可被运作
S:该程序目前正在睡眠当中(可说是idle状态啦!),但可被某些讯号(signal)唤醒
T:该程序目前正在侦测或者是停止了
Z:该程序应该已经终止,但是其父程序却无法正常的终止他,造成zombie(僵尸)程序的状态D不可中断状态
它们含意如下:
<:表示进程运行在高优先级上
N:表示进程运行在低优先级上
L:表示进程有页面锁定在内存中
s:表示进程是控制进程
l:表示进程是多线程的
+:表示当前进程运行在前台
D:系统守护进程
T:调式,程序执行一般停止
START:启动该进程的时间。
TIME:该进程占用的CPU时间。
COMMAND:启动该进程的命令的名称
2.查看动态的进程排名信息 top
[root@xlj1 -]# top
常用选项
选项 | 说明 |
---|---|
P | 根据CPU使用百分比大小进行排序 |
M | 根据驻留内存大小进行排序 |
N | 根据启动时间进行排序 |
c | 切换显示命令名称和完整命令行 |
h | 可以获得top程序的在线帮助信息 |
q | 退出top程序 |
数字 1 | 显示CPU个数和状态 |
各行的参数解释
第一行:任务队列信息
参数 | 说明 |
---|---|
02:55:13 | 系统时间 |
up 4:07 | 系统已运行时长 |
2 users | 当前登录用户数 |
load average: 0.00,0.01,0.05 | 系统负载,即单位时间内系统处理的任务数,后面三个数值分别为0分钟、1分钟、5分钟前到现在的平均值 |
第二行:进程信息
参数 | 说明 |
---|---|
Tasks | 总进程数 |
running | 正在运行的进程数 |
sleeping | 休眠的进程数 |
stopped | 中止的进程数 |
zombie | 僵死的进程数 |
第三行:CPU的占用信息
参数 | 说明 |
---|---|
us | 用户占用 |
sy | 内核占用 |
ni | 优先级调度占用 |
id | 空闲CPU,要了解空闲的 CPU 的百分比,主要看 %id 部分 |
wa | I/O 等待占用 |
hi | 硬件中断占用 |
si | 软件中断占用 |
st | 虚拟化占用 |
第四行:内存的占用信息
参数 | 说明 |
---|---|
total | 总内存空间 |
free | 空闲内存 |
used | 已用内存 |
buff/cache | 物理内存和交换内存的缓冲区总和 |
第五行:交换空间的占用信息
参数 | 说明 |
---|---|
total | 总交换空间 |
free | 空闲交换空间 |
used | 已用交换空间 |
avail Mem | 可用物理空间 |
3. 根据特定条件查询进程PID信息 pgrep
[root@xlj1 -]# pgrep -I "log"
[root@xlj1 -]# pgrep -I-U teached -t tty
常用选项
选项 | 说明 |
---|---|
-o | 仅显示找到的最小(起始)进程号 |
-n | 仅显示找到的最大(结束)进程号 |
-l | 显示进程名称 |
-P | 指定父进程号 |
-g | 指定进程组 |
-t | 指定开启进程的终端 |
-u | 指定进程的有效用户ID |
4.以树形结构列出进程信息 pstree
[root@xlj1 -]# pstree -aup
常用选项
选项 | 说明 |
---|---|
-a | 显示每个程序的完整指令,包含路径,参数或是常驻服务的标示 |
-c | 不使用精简标示法 |
-G | 使用VT100终端机的列绘图字符 |
-h | 列出树状图时,特别标明现在执行的程序 |
-l | 采用长列格式显示树状图 |
-n | 用程序识别码排序,预设是以程序名称来排序 |
-p | 显示程序识别码 |
-u | 显示用户名称 |
-U | 使用UTF-8列绘图字符 |
-V | 显示版本信息 |
三.进程的启动与控制
1.进程的启动方式
手工启动
- 前台启动:用户输入命令,直接执行程序
- 后台启动:在命令行尾加入“&"符号
调度启动
- 使用at命令,设置一次性计划任务
- 使用crontab命令,设置周期性计划任务
2.进程的前后台调度
Ctrl+Z组合键
- 将当前进程挂起,即调入后台并停止执行
jobs命令
- 查看处于后台的任务列表
fg命令
- 将后台进程恢复到前台运行,可指定任务序号
3.终止进程的运行
Ctrl+C组合键
- 中断正在执行的命令
kill、killall 命令
- kill用于终止指定PID号的进程
- killall用于终止指定名称的所有进程
- -9选项用于强制终止
pkill 命令
- 根据特定条件终止相应的进程
常用选项
选项 | 说明 |
---|---|
-U | 根据进程所属的用户名终止相应进程 |
-t | 根据进程所在的终端终止相应进程 |
四.计划任务管理
1.一次性计划任务 at
at [10:20] [2022-4-10]
at><EOT> 按 Ctrl+D 提交
2.设置周期性计划任务 crontab
(1)crontab命令
按照预先设置的时间周期(分钟、小时、天...)重复执行用户指定的命令操作
属于周期性计划任务
主要设置文件
- 全局配置文件位于文件:/etc/crontab
- 系统默认的设置位于目录:/etc/cron.*/
- 用户定义的设置,位于文件:/var/spool/cron/用户名
(2)管理crontab计划任务
编辑计划任务
- crontab -e [-u 用户名]
查看计划任务
- crontab -I [-u 用户名]
删除计划任务
- crontab -r [-u 用户名]
(3)crontab任务配置的格式
分 时 日 月 期
字段 | 说明 |
---|---|
分钟 | 取值为从0到59之间的任意整数 |
小时 | 取值为从0到23之间的任意整数 |
日期 | 取值为从1到31之间的任意整数 |
月份 | 取值为从1到12之间的任意整数 |
星期 | 取值为从0到7之间的任意整数,0或7代表星期日 |
命令 | 要执行的命令或程序脚本 |
时间数值的特殊表示方法
* | 表示该范围内的任意时间 |
, | 表示间隔的多个不连续时间点 |
- | 表示一个连续的时间范围 |
/ | 指定间隔的时间频率 |
应用示例
0 17 * * 1-5 | 周一到周五每天17:00 |
30 8 * * 1,3,5 | 每周一、三、五的8点30分 |
0 8-18/2 * * * | 8点到18点之间每2小时 |
0 * */3 * * | 每3天 |