一 程序和进程
程序:没有运行的代码就是程序
进程:运行起来的代码就是进程
注:进程的真正执行者
线程:线程是程序的副本,把进程复制了一份,只是复制了进程的一部分代码,就是为了能够执行任务即可,最小化的复制了这部分代码,仅满足基本需求。真正的执行者是线程而不是进程,线程就是进程的打工仔。
线程类似于什么呢:你的快递发货了,仓库那边需要统一分拣入库贴单再装车发走,这一环一环的步骤就叫线程
二 查看进程信息
查看静态的进程统计信息ps命令
ps -elf
-e:显示系统内的所有进程信息
-l:使用长格式显示进程的信息,详细信息
-f:完整的格式显示进程信息
各列的解释:
(1)F:内核分配给进程的系统标记。
S:进程的状态:
S:休眠状态的进程 R:正在运行的进程 D:不可中断的休眠状态 Z:僵尸进程 T:停止状态,也可是在后台暂停或者进程处于跟踪调试的状态
UID:启动这些进程的用户。
PID:进程的进程ID。
PPID:父进程的进程号(如果该进程是由另一个进程启动的)。
C:进程生命周期中的CPU利用率。
PRI:进程的优先级(越大的数字代表越低的优先级)。
NI:谦让度值用来参与决定优先级。
ADDR:进程的内存地址。
SZ:假如进程被换出,所需交换空间的大致大小。
WCHAN:若该进程在睡眠,则显示睡眠中的系统函数名。
STIME:进程启动时的系统时间。
TTY:进程启动时的终端设备。
TIME:运行进程需要的累计CPU时间。
CMD:进程的启动命令。
ps -aux
-a:显示终端上的所有的进程,包括其他用户的进程
-u: 列出进程的用户
-x:显示所有终端的进程信息
各列的解释:
user:开启这个进程的用户
pid:进程的进程id
%CPU:进程占用CPU的百分比
%MEM:占用物理内存的百分比
VSZ:虚拟内存
RSS:具体占了多少内存
TTY:启动进程的终端名
STAT:该行程的状态:
<:高优先级
s:包含子进程
N: 低优先级
+:位于前台
l:多个线程
START:该进程被触发启动时间
TIME:该进程实际使用CPU运行的时间。
COMMAND:进程的启动命令。
动态查看进程信息top命令
top常用命令:
top 命令——查看进程动态信息
第一行是 任务队列信息
11:06:48 系统时间
up 1:22 系统已运行时长
1 user 当前登录用户数
load average: 0.06, 0.60, 0.48 系统负载,即单位时间内系统处理的任务数,
后面三个数值分别为1分钟、5分钟、15分钟前到现在的平均值-P :根据CPU使用百分比大小进行排序
第二行为 进程信息
Tasks 总进程数
running 正在运行的进程数
sleeping 休眠的进程数
stopped 中止的进程数
zombie 僵死的进程数
第三行为 CPU的信息
us 用户占用
sy 内核占用
ni 优先级调度占用
id 空闲CPU,要了解空闲的 CPU 百分比,主要看%id部分
wa 磁盘读写性能 iostat--查看读写性能
hi 1分钟的cpu使用率
si 5分钟的cpu使用率
st 15分钟的cpu使用率
第四行为内存的信息
total 总内存空间
free 空闲内存
used 已用内存
buff/cache 物理内存和交换内存的缓冲区总和
第五行为交换空间的信息
total 总交换空间
free 空闲交换空间
used 已用交换空间
avail Mem 可用物理空间
进程信息区各列解释:
PID 进程id
USER 进程所有者的用户名
PR 优先级 --系统优先级
NI 谦让度值。负值表示高优先级,正值表示低优先级 --人为设置的优先级
VIRT 进程使用的虚拟内存总量,单位kb
RES 进程使用的物理内存大小,单位kb
SHR 共享内存大小,单位kb
S 进程状态
%CPU 上次更新到现在的CPU时间占用百分比
%MEM 进程使用的物理内存百分比
TIME+ 进程使用的CPU时间总计,单位1/100秒
COMMAND 命令名/命令行
top常用命令:
c 键:根据CPU使用百分比大小进行排序
q 键:退出 top 程序
数字1 键:显示CPU个数和状态
top -b -n 1
-b以文本查看 -n只运行一次就退出
这是以文本形式查看进程的信息
上述的都是动态,无法进行复制粘贴操作。
查看进程信息pgrep
常用选项:
-a:显示进程名和 PID;
-c:仅显示匹配进程的数量,而不显示进程名和 PID;
-f:匹配进程名及其参数;
以树状结构列出进程信息pstree
常用选项:
-p : 选项使用时可以同时列出对应的PID号
-u : 可以列出对应的用户名
-a: 可以列出完整的命令信息
列出后台进程状态信息jobs命令
常用选项
-l:显示所有后台进程的 PID;
-p:显示所有后台进程的进程组 ID;
-n:仅显示最近的后台进程;
-r:仅显示正在运行的后台进程;
-s:仅显示已停止的后台进程。
进程的前后台调度
CTRL+Z组合键将当前进程挂起,即调入后台并停止执行
fg命令
将后台进程恢复到前台运行,可指定任务序号
我们首先打开yii在里面输入点东西然后ctrl+z
可以看到已经被我停止放到后台了,我们使用jobs查看后台进程
Ctrl + C 组合键
中断正在执行的命令
kill 、killall 命令
kill用于终止指定PID 号的进程
killall用于终止指定名称的所有进程
-9 选项 用于强制终止
pkill 命令
根据特定条件终止相应的进程
常用命令选项:
-U 根据进程所属的用户名终止相应进程
-t 根据进程所在的终端终止相应的进程
[root ]# pgrep -l -U “hackli”
3045 bash
[root ]# pkill -9 -U “hackli”
[root ]# pgrep -l -U “hackli” #未显示进程
计划任务管理
at 命令
一次性计划任务
at [HH:MM] [yyyy-mm-dd] 时间分钟 年月日
例: [root ]# date
Sun May 7 10:33:13 EDT 2017
[root ]# at 10:35 2017_05_07
at > pgrep -Uroot |wc -l > /tmp/ps.root
at > <EOF>
Job1 cat sun May 7 10:35
Cat /tmp/ps.root
atq 查询at任务假话
atrm [数字] 删除一次性任务计划
Crontab 命令
安装预先设置的时间周期(分钟,小时,天...)重复执行用户指定的命令操作
例:创建一个任务计划,规定在2023年5月1日,下午2点对系统盘/dev/sda/boot下所有文件作一次备份。
属于周期性计划任务
主要设置文件
全局配置文件,位于文件:/etc/crontab
系统默认的设置,位于目录:/etc/cron.*/
用户定义的设置,位于文件:/var/spool/cron/用户名
管理crontab
Crontab -e 编辑任务计划
*/ 代表每间隔的意思 [*/3表示每隔三分钟]
* 代表任意的意思
- 代表连续的意思
, 代表不连续的间隔
crontab -l 查看任务计划
crontab -r 清空任务计划