目录
上述输出信息中,第一行为列表标题,其中各字段的含义描述如下:
5、根据特点条件查询进程PID信息-------pgrep命令
引言:Linux系统中进程就相当于windows任务管理器,所以我们要了解进程,以及如何查看进程,同时在工作中我们也要设置周期性计划,方便我们不用重复性操作。
1、程序和进程的关系
程序
保存在硬盘、光盘等介质中的可执行代码和数据
静态保存的代码
进程
在CPU及内存中运行的程序代码
动态执行的代码
父、子进程
每个程序可以创建一个或多个进程
区别
进程是动态的,程序是静态的
程序是二进制文件,进程是程序运行的过程
有生命周期和运行状态
2、查看进程-----ps -aux
ps命令
查看静态的进程统计信息
[root@localhost~] #ps -aux 常用的选项组合
将以简单列表的形式显示出进程信息
常用的参数
-a :显示当前终端下的所有进程信息,包括其他用户的进程。与"x"选项结合时将显示系统中所有的进程信息。
-u :使用以用户为主的格式输出进程信息。
-x :显示当前用户在所有终端下的进程信息
上述输出信息中,第一行为列表标题,其中各字段的含义描述如下:
USER:进程的用户
PID:进程的ID
%CPU:进程占用的CPU百分比
%MEM:占用内存的百分比
VSZ:该进程使用的虚拟内存量(KB)
RSS:该进程占用的物理内存量(KB)
TTY:启动进程的终端名。不是从终端启动的进程则显示为 ?
STAT:该行程的状态:
START:该进程被触发启动时间。
TIME:该进程实际使用CPU运行的时间。
COMMAND:进程的启动命令
其中进程状态,常见的状态有以下几种:
D:不可中断的休眠状态;
R:正在运行状态;
S:处于休眠状态,可被唤醒; +:表示当前进程运行在前台;
T:停止状态,可能是在后台暂停或进程处于跟踪 调试状态;
Z:僵尸进程,进程已经中止,但是部分程序还在内存当中
<:表示进程运行在高优先级上
N:表示进程运行在低优先级上
3、查看进程信息--------ps -elf
查看静态的进程统计信息
ps -elf
常用的参数
-e :显示系统内的所有进程信息
-l:使用长格式显示进程信息
-f:使用完整的格式显示进程信息
上述输出信息中,第一行为列表标题,其中各字段的含义描述如下
F:内核分配给进程的系统标记
S:进程的状态
UID:启动这些进程的用户
PID:进程的进程ID
PPID:父进程的进程号(如果该进程是由另一个进程启动的)
C:进程生命周期中的CPU利用率
PRI:进程的优先级(越大的数字代表越低的优先级)
NI:谦让度值用来参与决定优先级
ADDR:进程的内存地址
SZ:假如进程被换出,所需交换空间的大致大小
WCHAN :若该进程在睡眠,则显示睡眠中的系统函数名
STIME:进程启动时的系统时间
TTY:进程启动时的终端设备 pts/0255代表虚拟终端,一般是远程连接的终端; ttyl tty7代表本地控制台终端
TIME:运行进程需要的累计CPU时间
CMD:进程的启动命令
其中僵尸进程:
一个进程结束了,但是如果该进程的父进程已经先结束了,那么该进程就不会变成僵尸进程,因为每个进程结束的时候,系统都会扫描当前系统中所运行的所有进程,看有没有哪个进程是刚刚结束的这个进程的子进程,如果是的话,就由Init来接管它,成为它的父进程,子进程退出后init会回收其占用的相关资源。但是当子进程比父进程先结束,而父进程又没有回收子进程,释放子进程占用的资源,此时子进程将成为一个僵尸进程。
4、查看动态的进程信息-----top
上述输出信息中,第六行为列表标题,其中各字段的含义描述如下
PID:进程id
USER:进程所有者的用户名
PR:优先级(由内核动态调整) 用户不能调整
NI:进程谦让度值。nice值。负值表示高优先级,正值表示低优先级,用户可以自己调整
VIRT:进程使用的虚拟内存总量,单位kb
RES:进程使用的物理内存大小,单位kb
SHR:共享内存大小,单位kb
S:进程状态
%CPU:上次更新到现在的CPU时间占用百分比
%MEM:进程使用的物理内存百分比
TIME+:进程使用的CPU时间总计,单位1/100秒
COMMAND :命令名/命令行
其中第一行各字段的含义如下:
top– 19:11:57 #当前系统时间
up 2:35 #系统已经运行时间
3 users #当前登录用户
Load average 0.00, 0.01, 0.01 #系统平均负载,后面三个数字代表每1分钟,5分钟,15分钟的平均负载
其中第二行各字段的含义如下:
Tasks: 系统任务信息
187 total #进程总数
1 running #正在运行的进程数
186 sleeping # 睡眠的进程数
0 stopped #睡眠的进程数
0 zombie #僵尸进程数
其中第三行各字段的含义如下:
%Cpu(s) #cpu占用百分比信息
0.0 us #用户空间占用CPU百分比 查看CPU使用率
0.1 sy #内核空间占用CPU百分比
0.0 ni #用户进程空间内改变过优先级的进程占用CPU百分比
99.9 id #空闲CPU百分比
0.0 wa #等待输入输出的CPU时间百分比
0.0 hi #硬中断消耗时间 硬中断占用
0.0 si #软中断消耗时间 软中断占用
0.0 st #虚拟化占用
其中第四行各字段的含义如下:
Kib Mem #内存占用信息
3861516 total #物理内存总量
2941772 free #空闲内存总量
442928 used #已使用的物理内存总量
476816 buff/cache #用作内核缓存的内存量
其中第五行各字段的含义如下:
Kib Swap #交换空间占用
4095996 total #交换区总量
4095996 free #空闲交换区总量
0 used #已使用的交换区总量
3098320 avail Mem #缓冲的交换区总量
top命令全屏操作界面快捷建
P 键:根据CPU使用百分比大小进行排序
M 键:根据驻留内存大小进行排序
N 键:根据启动时间进行排序
c 键:切换显示命令名称和完整命令行
h 键:可以获得 top程序的在线帮助信息
k 键:根据提示输入指定进程的 PID 号并按 Enter 键终止对应的进程
数字1 键:显示CPU个数和状态
q 键:退出 top 程序
实验
例: 需求:压力测试,查看cpu和内存的使用率
1、先用top命令查看动态进程信息,可以查看压力测试前cpu和内存的使用率
2、模拟持续输入文件,测试cpu和内存的抗压能力
3、用dd命令做压力测试后查看cpu和内存使用率
4、cpu和内存使用率过高,无法将/etc/下的所有文件复制到/mnt/test
查看,发现内存已被占满
5、查看磁盘占用情况,发现/mnt/占用空间过高
6、找到问题文件并删除
7、解决问题后,再次查看cpu和内存的使用率,恢复正常
结论:
top可以动态的查看系统进程的使用情况,方便我们查看cpu和内存的使用率,以防出现内存过大导致系统崩溃,会对我们工作造成影响,我们要找出原因,并解决问题。
5、根据特点条件查询进程PID信息-------pgrep命令
常见参数
-l : 选项可同时输出对应的进程名以及PID
-U:选项查询特定用户的进程(用户需登录)
-t:选项查询在特定终端运行的进程
例:查询以“log”显示的进程id
查询指定用的进程id
查询指定终端的进程id
6、以树形结构列出进程信息-------pstree命令
pstree 命令默认情况下只显示各进程的名称
常见参数
-p:选项使用时可以同时列出对应的PID号
-U:选项可以列出对应的用户名
-a:选项可以列出完整的命令信息
例:登录ly用户,进行编辑,root用户可以以树形结构查看进程信息
7、进程的启动方式
手工启动
前台启动:用户输入命令,直接执行程序
后台启动:在命令行尾加入& 符号
例:
调度启动
使用at命令,设置一次性计划任务
使用crontab命令,设置周期性计划任务
进程的前台后台调度-------fg/bg
Ctrl+Z组合键
将当前进程挂起,即调入后台并停止执行
jobs命令
查看处于后台的任务列表
fg命令(前台)
将后台进程恢复到前台运行,可指定任务序号
bg命令(后台)
可以将后台中暂停执行(如按 Ctrl+Z 组合键挂起)的任务恢复运行,继续在后台执行操作
8、终止进程的运行------kill/killall
Ctrl+C组合键
中断正在执行的命令
kill 、killall命令
kill 用于终止指定PID号的进程
killalll用于终止指定名称的所有进程
-9选项用于强制终止
kill 如果不加参数默认值为:-15 (正常停止一个进程)终止
-9:强制杀死一个进程 (不正规)
-1 :重新加载进程
-3 :杀死并退出进程 (友好的方式)
-19 :停止/暂停
9、终止进程的运行 ---------pkill命令
根据特定的条件终止相应的进程
格式:pkill -9 -U "用户"
常用命令选项
-U :根据进程所属的用户名终止相应的进程
-t : 根据进程所在的终端终止相应的进程
10、计划任务管理------at命令
一次性计划任务
例:格式:at [14:44] [2022-04-05]
Ctrl +D 键提交任务
date 命令 查看时间
atq : 查看未执行的一次计划
atrm任务序号 :删除第几条任务
例:
对于已经设置但还未执行(未到时间点)的计划任务,可以通过 atq 命令进行查询。但已执行过的 at 任务将不会再出现在列表中。具体操作如下:
11、计划任务管理----------crontab命令
设置周期性计划任务
按照预先设置的时间周期(分钟、小时、天.......)重复执行用户指定的命令操作
属于周期性计划任务
主要设置文件
全局配置文件,位于文件:/etc/crontab
系统默认的设置,位于目录:/etc/cron.*/
用户定义的设置,位于文件:/var/spool/cron/ 用户名
crond 守护进程会自动检查/etc/crontab 文件,/etc/cron.d/目录及/var/spool/cron/目录中的改变,如果发现有配置更改,它们就会被载入内存,所以当某个crontab 文件改变后并不需要重新启动crond 守护进程就可以使设置生效
管理crontab计划任务
编辑计划任务 默认为当前用户
crontab -e [-u 用户名]
查看计划任务
crontab -l [-u 用户名]
删除计划任务
crontab -r [-u 用户名]
crontab 任务配置的格式
字段 | 说明 |
分钟 | 取值为从0到59之间的任意整数 |
小时 | 取值为从0到23之间的任意整数 |
日期 | 取值为从1到31之间的任意整数 |
月份 | 取值为从1到12之间的任意整数 |
星期 | 取值为从0到7之间的任意整数,0或7代表星期日 |
命令 | 要执行的命令或程序脚本 |
时间数值的特殊表示方法
* 表示该范围内的任意时间
, 表示间隔的多个不连续时间点
- 表示一个连续的时间范围
/ 指定间隔的时间频率
应用示例:
0 17 * * 1-5 周一到周五每天17:00
30 8 * * 1,2,5 每周一、三、五的8点30分
0 8-18/2 * * * 8点到18点之间每2小时
0 * */3 * * 每三天
12、总结
通过上述描述,我们可以了解到查看进程的命令(ps、top、pgrep、pstree),以及程序和进程的关系和区别,进程控制分为启动进程,调度进程,终止进程,at命令设置一次性计划任务,crontab命令,设置周期性计划任务,设置计划任务可以定期备份web数据库,定期采集检测数据,find 查找5天或者更久之前的数据进行删除,这样就不会出现内存过大的情况。
原文链接:https://blog.csdn.net/weixin_56270746/article/details/123895618
此处评论已关闭