目录
一、程序
1.1什么是程序?
-
是一组计算机能识别和执行的指令,运行于电子计算机上,满足人们某种需求的信息化工具
-
用于描述进程要完成的功能,是控制进程执行的指令集
二、进程
2.1 什么是进程
运行中的程序的一个副本,是被载入内存的一个指令集合,是资源分配的单位
2.2 进程的组成
进程一般由程序、数据集合和进程控制块三部分组成。
2.3 进程的特征
- 动态性:进程是程序的一次执行过程,是临时的,有生命期的,是动态产生,动态消亡的;
- 并发性:任何进程都可以同其他进程一起并发执行;
- 独立性:进程是系统进行资源分配和调度的一个独立单位;
- 结构性:进程由程序、数据和进程控制块三部分组成。
2.4 进程的状态
分为创建、就绪、执行、阻塞、终止的状态
三、进程管理相关命令
3.1 ps命令:静态查看 进程信息
ps aux或ps -ef 查看系统中所有的进程
3.2 top命令:
动态查看 进程信息,默认每3秒刷新一次
各个字段所对应的含义:
PID | 进程的 ID |
USER | 该进程所属的用户 |
PR | 优先级,数值越小优先级越高 |
NI | 优先级,数值越小、优先级越高 |
VIRT | 该进程使用的虚拟内存的大小,单位为 KB |
RES | 该进程使用的物理内存的大小,单位为 KB |
SHR | 共享内存大小,单位为 KB |
S | 进程状态 |
%CPU | 该进程占用 CPU 的百分比 |
%MEM | 该进程占用内存的百分比 |
TIME+ | 该进程共占用的 CPU 时间 |
COMMAND | 进程的命令名 |
3.3 pstree 命令
pstree -p # 显示进程树并显示进程号
3.4 kill与killall命令
格式:kill [信号] PID
- kill用于终止指定PID号的进程
- klll用于终止指定名称相关的所有进程
- -9选项用于强制终止
kill的信号以及含义
信号编号 | 信号名 | 含义 |
---|---|---|
0 | EXIT | 程序退出时收到该信息。 |
1 | HUP | 挂掉电话线或终端连接的挂起信号,这个信号也会造成某些进程在没有终止的情况下重新初始化。 |
2 | INT | 表示结束进程,但并不是强制性的,常用的 "Ctrl+C" 组合键发出就是一个 kill -2 的信号。 |
3 | QUIT | 退出。 |
9 | KILL | 杀死进程,即强制结束进程。 |
11 | SEGV | 段错误。 |
15 | TERM | 正常结束进程,是 kill 命令的默认信号。 |
格式:killall [选项] [信号] 进程名
- -i:交互式,询问是否要杀死某个进程;
- -I:忽略进程名的大小写;
四、进程的启动方式
4.1 手动启动
- 前台启动:通过终端启动,且启动后一直占据终端
- 后台启动:可通过终端启动,但启动后即转入后台运行(释放终端)
4.2 进程的前后台调度
将前台任务 放入后台运行:
dd if=dev/zero of=dev/null
查看 后台运行的命令 jobs
把后台命令调回前台 fg 序号
再调回 后台 ctrl+z 调入后台 并停止
继续后台命令 :bg+序号
五、计划任务
5.1 at :一次性执行任务
at [HH:MM] [yyyy-mm-dd] #不带年月日为今天执行
atq #查看未执行的一次性计划任务
atrm 1 #删除第一条任务
注意:创建任务完成后,按ctrl+D 提交任务
5.2 crontab:周期性计划任务
crontab [选项] [file]
选项 | 功能 |
---|---|
-u user | 用来设定某个用户的 crontab 服务,例如 "-u demo" 表示设备 demo 用户的 crontab 服务,此选项一般有 root 用户来运行。 |
-e | 编辑某个用户的 crontab 文件内容。如果不指定用户,则表示编辑当前用户的 crontab 文件。 |
-l | 显示某用户的 crontab 文件内容,如果不指定用户,则表示显示当前用户的 crontab 文件内容。 |
-r | 从 /var/spool/cron 删除某用户的 crontab 文件,如果不指定用户,则默认删除当前用户的 crontab 文件。 |
-i | 在删除用户的 crontab 文件时,给确认提示。 |
配置文件路径:/etc/crintab 文件中有创建规则,如图所示:
格式:
* * * * * +命令
#分 时 日 月 周 +命令
项目 | 含义 | 范围 |
---|---|---|
第一个 * | 一小时当中的第几分钟(minute) | 0~59 |
第二个 * | 一天当中的第几小时(hour) | 0~23 |
第三个 * | 一个月当中的第几天(day) | 1~31 |
第四个 * | 一年当中的第几个月(month) | 1~12 |
第五个 * | 一周当中的星期几(week) | 0~7(0和7都代表星期日) |
特殊字符:
特殊符号 | 含义 |
---|---|
*(星号) | 代表任何时间。比如第一个"*"就代表一小时种每分钟都执行一次的意思。 |
,(逗号) | 代表不连续的时间。比如"0 8,12,16***命令"就代表在每天的 8 点 0 分、12 点 0 分、16 点 0 分都执行一次命令。 |
-(中杠) | 代表连续的时间范围。比如"0 5 ** 1-6命令",代表在周一到周六的凌晨 5 点 0 分执行命令。 |
/(正斜线) | 代表每隔多久执行一次。比如"*/10命令",代表每隔 10 分钟就执行一次命令。 |
注意事项:
- 6 个选项都不能为空,必须填写。如果不确定,则使用“*”代表任意时间。
- crontab 定时任务的最小有效时间是分钟,最大有效时间是月。像 2018 年某时执行、3 点 30 分 30 秒这样的时间都不能被识别。
- 在定义时间时,日期和星期最好不要在一条定时任务中出现,因为它们都以天为单位,非常容易让管理员混淆。
- 在定时任务中,不管是直接写命令,还是在脚本中写命令,最好都使用绝对路径。有时使用相对路径的命令会报错。
六、如何查看五大性能
cpu :free、top
内存:top 、ps aux
磁盘大小:lsblk 剩余磁盘查看用 df
磁盘读写:iostat、dd、vmstat
网络:dstat、iftop