进程和计划任务管理
一、进程
1.1 程序,进程与线程
程序:是一串保存在硬盘等介质中的可执行的,没有运行的代码。
进程:正在运行中的程序
线程:程序的副本,相当于把进程复制了一份,不过之复制了进程的一部分代码,能够执行任务即可。最小化的复制了进程的代码,仅满足基本需求。真正执行的是线程。
1.2 开启,结束进程的过程
开启进程:systemd(父进程)先启动——>子进程 (父进程给子进程分配资源)
结束进程:子进程先结束——>父进程要先回收分配给子进程的资源,然后再结束父进程
僵尸进程(特殊情况):父进程先结束,子进程还在,无法回收资源
僵尸进程只能同过重启解决
1.3 查看进程命令
1.3.1 ps -elf
[root@localhost /]# ps -elf //查看静态的进程统计信息 F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD
e:显示系统内的所有进程
l:长格式显示
f:完整格式显示进程信息
每一列的含义
- F:内核分配给进程的系统标记
- S:进程的状态 【S:休眠状态的进程;R:正在运行的进程;D:不可中断的休眠状态的进程;Z:僵尸进程;T:停止状态,可能是在后台暂停或进程处于跟踪调试状态】
- UID:启动这些进程的用户
- PID:进程的进程ID(唯一)
- PPID:父进程的进程号
- C :CPU利用率
- PRI:进程的优先级(数字越大,优先级越低)
- NI :谦让度值用来参与决定优先级
- ADDR:进程的内存地址
- SZ:假如进程被换出,所需交换空间的大致大小
- WCHAN:若该进程在睡眠,则显示睡眠中的系统函数名
- STIME:进程启动时,系统所处的时间
- TTY:进程启动时的终端设备
- TIME:运行进程需要的累计CPU时间
- CMD:进程的启动命令
1.3.2 ps -aux
[root@localhost /]# ps -aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND [root@localhost /]# ps -aux | grep 进程名 //指定查看
a:显示当前终端上的所有进程,包括其他用户
u:列出进程用户
x:显示所有终端的进程信息
每一列的含义
- USER:进程的用户
- PID:进程的ID
- %CPU:进程占用的CPU百分比
- %MEM:进程占用物理内存的百分比
- VSZ:该进程使用的虚拟内存量(KB)
- RSS:该进程占用的物理内存量(KB)
- TTY:启动进程的终端名。不是从终端启动的进程则显示为 ?
- STAT:该进程的状态【S:休眠状态的进程;R:正在运行的进程;D:不可中断的休眠状态的进程;Z:僵尸进程;T:停止状态,可能是在后台暂停或进程处于跟踪调试状态;<:高优先级;N:低优先级;L:有些页被锁进内存;s:包含子进程;+:位于前台的进程组;l:多线程】
- START:该进程被触发启动的时间
- TIME:运行进程需要的累计CPU时间
- COMMAND:进程的启动命令
1.3.3 pstree
[root@localhost /]# pstree [选项] [ PID | USER ] -a列出完整命令信息 -p:显示进程PID -u:显示进程用户 -V:显示版本信息 pstree -aup
面试题:查看线程
pstree -p PID号 //只显示线程 pstree -up PID号 //即显示线程,也显示用户
1.3.4 top(动态查看进程信息)
[root@localhost /]# top top - 19:01:03 up 5:39, 2 users, load average: 0.00, 0.01, 0.05 Tasks: 183 total, 1 running, 182 sleeping, 0 stopped, 0 zombie %Cpu(s): 2.9 us, 2.9 sy, 0.0 ni, 94.1 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : 2014504 total, 505784 free, 753580 used, 755140 buff/cache KiB Swap: 4882428 total, 4882428 free, 0 used. 1024856 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
第一行:任务队列信息
19:01:03:系统现在所处的时间(每3s刷新一次)
up 5:39:系统已经运行的时长
2 users:当前登录的用户数
load average: 0.00, 0.01, 0.05:系统负载,即单位时间内系统处理的任务数,后面三个数值分别为1分钟、5分钟、15分钟前到现在的平均值
第二行:进程信息
- Tasks: 183 total :总进程数
- 1 running:正在运行的进程数
- 182 sleeping:休眠的进程数
- 0 stopped:中止的进程数
- 0 zombie:僵尸进程数
第三行: CPU的信息
%Cpu(s)
- 2.9 us:用户占用的CPU百分比
- 2.9 sy:内核占用的CPU百分比
- 0.0 ni:优先级调度
- 94.1 id:空闲CPU百分比
- 0.0 wa:硬盘读写性能
- 0.0 hi:1分钟CPU的使用率
- 0.0 si:5分钟CPU的使用率
- 0.0 st:15分钟CPU的使用率
第四行:内存信息
KiB Mem
- 2014504 total:总内存空间
- 505784 free:空闲内存
- 753580 used:已用内存
- 755140 buff/cache:物理内存和交换内存的缓冲区总和
第五行:
KiB Swap
- 4882428 total:总交换空间
- 4882428 free:空闲交换空间
- 0 used:已用交换空间
- 1024856 avail Mem :可用物理空间
每一列的含义
- PID:进程ID
- USER:进程所有者的用户名
- PR:优先级
- NI:谦让度值
- VIRT:进程使用的虚拟内存总量,(KB)
- RES:进程使用的物理内存大小,(KB)
- SHR:共享内存大小,(KB)
- S:进程状态
- %CPU:进程占用的CPU百分比
- %MEM:进程占用的物理内存百分比
- TIME+:进程使用的CPU时间总计,(1/100s)
- COMMAND:进程启动命令
[root@localhost /]# top -b -n 1
-b:以文本格式形式输出
-n 数字:表示运行n次
c键:根据CPU使用百分比大小进行排序
数字键1:列出服务器上所有的CPU和他们的状态
1.3.5 pgrep
用于查找进程 ID(PID)的命令行工具,它可以根据进程的名字或其他属性来查找对应的PID
pgrep 直接使用只显示PID -a:显示进程名和PID -l:显示进程名 -u:指定匹配进程的所有者
例:
pgrep -lu "root" //列出所有属于root用户的进程的信息
1.3.6 kill(终止进程)
面试题
当执行kill是,实际是向内核传递一个信号,内核收到信号后由内核执行终止进程
1.3.6 kill(终止进程) 面试题 当执行kill是,实际是向内核传递一个信号,内核收到信号后由内核执行终止进程 kill 进
1.4 进程的前后台调度
jobs 列出后台进程的状态信息 -l:显示所有后台进程的PID -p:显示所有后台进程的进程组ID -n:仅显示最近的后台进程 -r:仅显示正在运行的后台进程 -s:仅显示已停止的后台进程
演示
[root@localhost /]# vim aa ##在vim的视图模式下按下 Ctrl+z ,表示将这个文件放到后台并停止运行 [1]+ 已停止 vim aa [root@localhost /]# jobs -l [1]+ 7379 停止 vim aa [root@localhost /]# pgrep -l "vim" 7379 vim [root@localhost /]# kill -9 7379 [root@localhost /]# jobs -l [1]+ 7379 已杀死 vim aa cp -r /mnt /opt & &:表示在后台运行
二、计划任务管理
crontab(定时任务,周期性任务)
创建定时任务
crontab -e [-u 用户名] 不加-u默认当前用户
* 表示该范围内的任意时间 , 表示间隔的多个不连续时间点 1,3,5 - 表示一个连续的时间范围 2-10 * * * *1-3 / 表示间隔的时间频率 */10 * * * * */10