一、程序和进程的关系
程序:保存在硬盘、光盘等介质中的可执行代码和数据。静态保存的代码
进程: 在CPU及内存中运行的程序代码。动态执行的代码,有父子进程。
每个程序可以创建一个或者多个进程。
以公司部命和员工来举例:
二、ps命令
1.1查看静态的进程统计信息 ps
[root@localhost ~]#ps aux
-a:显示当前终端下的所有进程信息,包括其他用户的进程。与“x”选项结合时将显示系统中所有的进程信息。
-u:使用以用户为主的格式输出进程信息
-x:显示当前用户在所有终端下的进程信息
注:ctrl +c是发送sigint信号中止一个进程,ctrl +z是发送sigstop信号,挂起一个进程。
ctrl +d表示输入完成或者注销
常用的选项组合;ps -aux
上述输出信息中,第一行为列表标题,其中各字段的含义描述如下。
USER:启动该进程的用户账号的名称。
PID:该进程在系统中的数字ID号,在当前系统中是唯一的。
%CPU:CPU占用的百分比。
%MEM:内存古用的百分比。
VSZ:该进程使用的虚拟内存量(KB)。
RSS:该进程占用的物理内存量(KB)。
TTY:表明该进程在哪个终端上运行。不是从终端启动的进程则显示为?。简说:pts是远程登录终端ctrl+ALT F1-F6 tty1 图像界面2和6字符界面 ?系统本身自身执行的进程G
STAT:该进程的状态(D:不可中断的休眠状态:R:正在运行状态;s:处于休眠状态,可被唤醒;T:停止状态,可能是在后台暂停或进程处于跟踪调试状态:Z:僵尸进程,进程已经中止,但是部分程序还在内存当中)
D:系统守护进程
T:调式、程序执行一般停止
R:该程序目前正在运作,或者是可被运作
s:该程序目前正在睡眠当中(可说是idle状态啦!),但可被某些讯号(siqnal)唤醒。
T:该程序目前正在侦测或者是停止了;
Z :该程序应该已经终止,但是其父程序却无法正常的终止他,造成 zombie(疆尸)程序的状态D不可中断状态.它们含意如下::
<:表示进程运行在高优先级上
N:表示进程运行在低优先级上
L:表示进程有页面锁定在内存中
s:表示进程是控制进程
1:表示进程是多线程的
+:表示当前进程运行在前台
D:系统守护进程
T调式、程序执行一般停止
START:启动该进程的时间。
TTME:该进程占用的CPU时间。
COMMAND:启动该进程的命令的名称
1.2示例:查看关于wuzu.txt的进程信息
第一步:vim wuzu.txt 首先创建文本并进入编辑
第二步:复制一个连接在新的连接中输入:ps -aux|grep wuzu.txt
第三步:ctrl +z停止编辑在一次查看状态发生变化
第四步:再次输入vim wuzu.txt 会显示保存信息E325:在次查看进程还在运行
第五步:kill -9 进程号杀死进程
(经常遇到)第六步:输入vim wuzu.txt:还是会报错因为有缓冲文件。解决办法删除缓冲文件rm -rf .wuzu.txt.swp 再次进入即可编辑文本。
2.1查看静态的进程统计信息 ps
[root@localhost ~]#ps -elf
字段含义
一个字F段:内核分配给进程的系统标记
第二字段S:表示进程的状态
第三字段UID:启动用户
第四字段PID:进程id号
第五字段PPID:父进程的进程号
第六字段C:进程生命周期
第七字段PRI:进程优先级
第八字段NI:谦让度值参与决定优先级
第九字段ADDR:进程内存地址
第十字段SZ:进程所需交换空间大小
十一字段WCHAN:进程睡眠使用函数
十二字段STIME:进程启动时间
十三字段TTY:进程启动时终端设备
十四字段TIME:进程运行累计时间
十五字段CMD:进程的启动命令
2.2僵尸进程:
一个进程结束了,但是如果该进程的父进程已经先结束了,那么该进程就不会变成僵尸进程,因为每个进程结束的时候,系统都会扫描当前系统中所运行的所有进程,看有没有哪个进程是刚刚结束的这个进程的子进程,如果是的话,就由Init来接管它,成为它的父进程,子进程退出后init会回收其占用的相关资源。但是当子进程比父进程先结束,而父进程又没有回收子进程,释放子进程占用的资源,此时子进程将成为一个僵尸进程。
2.3进程状态。常见的状态有以下几种:
-D:不可被唤醒的睡眠状态,通常用于I/0情况。
-R:该进程正在运行。
-S:"该进程处于睡眠状态,可被唤醒。
-T:停止状态,可能是在后台暂停或进程处于除错状态。
-W: 内存交互状态(从2.6内核开始无效)。
-X:死掉的进程(应该不会出现)。
-Z: 僵尸进程。进程已经中止,但是部分程序还在内存当中。
-<: 高优先级(以下状态在BSD格式中出现)。
-N: 低优先级。
-L: 被锁入内存。
-S: 包含子进程。
-1: 多线程(小写L)。
-+: 位于后台。
-C."进程占用CPU的百分比
2.4示例:ps -aux 和ps -elf的区别
可以看出他们两的用处基本相同就是显示的数值有所不同
三、查看进程信息top
1.1top命令 :查看动态的进程排名信息
[root@localhost ~]# top
参数信息:
上述输出信息中,开头的部分显示了系统任务(Tasks)、CPU占用、内存占用(Mem)、交换空间(Swap)等汇总信息,汇总信息下方依次显示当前进程的排名情况。相关信息的含义表述如下。 uptime:17:14:30 当前时间
up 31days 系统运行时间,说明此服务器连续运行 20天了
4 user当前登录用户数
load average: 0.00,0.01.0.03系统负载,即任务队列的平均长度。三个数值分别为1分钟、5分钟、15分钟前到现在的平均值。
系统任务(Tasks)信息:total,总进程数;running,正在运行的进程数;sleeping,休眠的进程数;stopped,中止的进程数;zombie,僵死无响应的进程数。
CPU占用信息:us,用户占用;sy,内核占用;ni,优先级调度占用;id,空闲CPU;wa,I/O等待占用;hi,硬件中断占用;si,软件中断占用;st,虚拟化占用。要了解空闲的CPU百分比,主要看%id部分。
内存占用(Mem)信息:total,总内存空间:free,空闲内存;used,已用内存;buff/cache,物理内存和交换内存的缓冲区总和。
交换空间(Swap)占用:total,总交换空间;free,空闲交换空间;used,已用交换空间;avail Mem,可用物理空间。
1.2详细说明
(1)Tasks:240 total进程总数
1 running 正在运行的进程数
240sleeping睡眠的进程数
1 stopped 停止的进程数
0 zombie 僵尸进程数
Cpu(s):0.01%us系统用户进程使用CPU百分比。
0.00%sy内核中的进程占用CU百分比优先级调度占用
0.00%ni用户进程空间内改变过优先级的进程占用CPU百分比
99.9%号 id 空闲CPU百分比
0.0号wa
cpu 等待 /0 完成的时间总量。
(2)KIBMem:3861508 total 物理内存总量
798428 used使用的物理内存总量
2176632 free 空闲内存总量
886448 buff/cache用作内核缓存的内存量。和free-k一个意思
(3)KIBSwap:8191996 total交换区总量
0 used 使用的交换区总量
8191996 free 公闲交换区总量
2719732 availMem 总的可利用内存是多少
运行进程信息
PID:进程id
USER: 进程所有者的用户名
PR:优先级
NI:进程优先级
VIRT:虚拟内存
RES:实际使用的物理内存
SHR:共享内存大小
S:进程状态(D=不可中断的睡眠状态,R=运行中或可运行s=睡眠中,T表示已跟踪以及已停止,z=僵停
%CPU:上次更新到现在的cpu时间占用百分比
%MEM:进程使用的物理内存百分比
TIME+: 进程使用的cpu时间总计
COMMAND:命令名/命令行
三、查看进程信息
3.1pgrep命令
根据特定的条件查询PID信息
pgrep -l “log”显示进程名
pgrep -l -U kgc //-U指定特定用户 -t 指定终端
常用参数
-l:选项可同时输出对应的进程名以及PID
-U:选项查询特定用户的进程
-t:选项查询在特定终端运行的进程
3.2pstree命令
(1)以树形结构列出进程信息
常用参数:
-p:选项使用时可以同时列出对应的PID号
-u:选项可以列出对应的用户名
-a:选项可以列出完整的命令信息
(2)示例:以树形结构列出zhuxuan用户的进程信息
四、进程的启动方式
1.手工启动
前台启动:用户输入命令,直接执行程序
后台启动:在命令行加入&符号
[root@fbc ~]#cp /dev/cdrom mycd.iso &
[1] 28454
输出信息中包括后台任务序号、PID号
调度启动
使用at命令,设置一次性计划任务
使用crontab命令,设置周期性计划任务
进程的前后台调度
Ctrl +Z 组合键
将当前程序挂起,即调入后台并停止执行
2.jobs命令
查看处于后台的任务列表
fg命令
将后台进程恢复到前台运行,可指定任务序列号
五、进程的中止运行
1.Ctrl +C组合键
中止正在执行的命令
2.kill 、killall命令
kill用于中止指定PID号的进程
killall用于中止指定名称的所以进程
-9选项用于强制中止
示例
kill 用于指定PID号的进程
killall用于中止指定名称的所以进程
3.pkill命令
根据特定条件中止相应的进程
常用命令选项:-U:根据进程所属的用户名中止相应进程
-t :根据进程所在的终端终止相应进程
pkill 指定用户 kill指定进程
示例:
六、计划任务管理
1.计划任务一般用来干什么?
(1)定期备份web数据库
(2)定期采集检测数据
(3)find 5天以外的数据删除微服务java (日志)
2.at命令
一次性计划任务
at [HH:MM] [yyyy-mm-dd]
示例1:
示例二:
atq命令:可以查看我计划的进程信息
atrm 进程号:可以删除计划进程
![](https://i-blog.csdnimg.cn/blog_migrate/cdfccce43106722ef05d15c24e245160.png)
3.crontab命令
3.1概述
按照预先设置的时间周期(分钟:小时:日:月:周)重复执行用户指定的命令操作
属于周期性计划任务
主要设置文件
:全局配置文件,位于文件:/etc/crontab
:系统默认的设置,位于文件:/etc/cron.*/
: 用户定义的设置。位于文件:/var/spool/cron/用户名
注:crontab守护进程会自动检测/etc/crontab文件/etc/cron.d目录及/var/spool/cron/目录中的改变,如果发现配置有更改,它们会背载入内存,所有放某个crontab文件改变后并且不需要重新启动crond守护进程就可以设置生效。
3.2crontab命令
编辑计划任务:crontab -e [-u 用户名]
查看计划任务:crontab -l [-u 用户名]
删除计划任务:crontab -r [-u 用户名]
3.3时间格式
分钟:0-59
小时:0-23
日期:1-31
月份:1-12
星期:0-7,0或7代表星期日
命令:要执行的命令或程序脚本
特殊表示方法:
* 表示范围内的任意时间
,表示间隔的多个不连续时间点
- 表示一个连续的时间范围
/ 指定间隔的时间频率
示例1:设置循环关闭sshd.service
(1)输入corntab -e进入编辑 输入关闭sshd服务的代码
(2)corntab -l 查看
(3)断开shell重新连接
(4)打开虚拟机重启sshd服务
(5)重新连接虚拟机
示例2:指定用户创建备份计划任务
(1)创建用户 创建文件夹backup1
(2)进入用户系统crontab -e创建计划任务
(3)查看计划任务crontab -l
(4) 查看文件用户下面的backup1
总结
查看进程的命令(ps,top、pgrep、pstree)
进程控制 : 启动进程、调度进程、终止进程
at命令设置计划任务
crontab计划任务的配置字段