第九章、进程和计划任务管理

第九章、进程和计划任务管理

一、查看进程

1、程序和进程的关系

1.1程序

1.1.1 保存在硬盘、光盘等介质中的可执行代码和数据
1.2.2 文件中静态保存的代码

1.2进程

1.2.1 在CPU及内存中运行的代码
1.2.2 动态执行的代码
1.2.3 父、子进程
1.2.4 每个程序可以创建一个或多个子进程

2、查看进程信息

2.1 ps -aux命令——查看进程静态信息

a:显示终端bai上的所有进程,包括其他用户的进程
u:表示列出进程的用户
x:显示所有终端的进程

[root@xiaolei ~]# ps -aux
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.0  0.0 193696  6820 ?        Ss   04:58   0:01 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root          2  0.0  0.0      0     0 ?        S    04:58   0:00 [kthreadd]
root          4  0.0  0.0      0     0 ?        S<   04:58   0:00 [kworker/0:0H]
root          6  0.0  0.0      0     0 ?        S    04:58   0:00 [ksoftirqd/0]

字段一:USER——进程的用户
字段二:PID——进程的ID
字段三:%CPU——进程占用的CPU百分比
字段四:%MEM——占用内存的百分比
字段五:VSZ——该进程使用的虚拟内存量(kb)
字段六:RSS——该进程占用的物理内存量(kb)
字段七:TTY——启动进程的终端名,不是从终端启动的进程则显示为?
字段八:STAT——该行程的状态

D:不可中断的休眠状态;

R:正在运行状态;

S:处于休眠状态,可被唤醒;

T:停止状态,可能在后台暂停或进程处于跟踪调试状态;

Z:僵尸进程,进程已经终止,但是部分程序还在内存当中。

字段九:START——该进程被触发启动时间
字段十:TIME——该进程实际使用CPU运行的时间
字段十一:COMMAND(cmd命令)——进程的启动命令

2.2 进程注意

进程和进程之间的资源不共享,PID不共享

2.3 补充僵尸进程

​ 一个进程结束了,但是如果该进程的父进程已经先结束了,那么该进程就不会变成僵尸进程,因为每个进程结束的时候,系统都会扫描当前系统中所运行的所有进程,看有没有哪个进程是刚刚结束的这个进程的子进程,如果是的话,就由Init来接管它,成为它的父进程,子进程退出后init会回收其占用的相关资源。但是当子进程比父进程先结束,而父进程又没有回收子进程,释放子进程占用的资源,此时子进程将成为个僵尸进程。

2.2 ps -elf命令——查看进程静态信息

e:显示系统内的所有进程信息
l:使用长格式显示进程信息
f:使用完整的格式显示进程信息

[root@xiaolei ~]# ps -elf
F S UID         PID   PPID  C PRI  NI ADDR SZ WCHAN  STIME TTY          TIME CMD
4 S root          1      0  0  80   0 - 48424 ep_pol 04:58 ?        00:00:01 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
1 S root          2      0  0  80   0 -     0 kthrea 04:58 ?        00:00:00 [kthreadd]
1 S root          4      2  0  60 -20 -     0 worker 04:58 ?        00:00:00 [kworker/0:0H]

字段一:F——内核分配给进程的系统标记
字段二:S——进程的状态
字段三:UID——启动这些进程的用户
字段四:PID——进程的进程ID
字段五:PPID——父进程的进程号(如果该进程是由另一个进程启动的)
字段六:C——进程生命周期中的CPU利用率
字段七:PRI——进程的优先级(越大的数字代表越低的优先级)
字段八:NI——谦让度值用来参与决定优先级
字段九:ADDR——进程的内存地址
字段十:SZ——假如进程被换出,所需交换空间的大致大小
字段十一:WCHAN——若该进程在睡眠,则显示睡眠中的系统函数名
字段十二:STIME——进程启动时的系统时间
字段十三:TTY——进程启动时的终端设备字段十四:TIME——运行进程需要的累计CPU时间
字段十五:CMD——进程的启动命令

2.3 top命令——查看进程动态信息

[root@xiaolei ~]# top
top - 11:44:35 up  6:45,  2 users,  load average: 0.02, 0.02, 0.05
Tasks: 164 total,   1 running, 163 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  7990060 total,  7300344 free,   390152 used,   299564 buff/cache
KiB Swap:  8257532 total,  8257532 free,        0 used.  7351776 avail Mem

2.3.1 第一行是任务队列信息

11:44:35——系统时间
up 6:45——系统已运行时长
2 users——当前登录用户数

load average: 0.02, 0.02, 0.05——系统负载,即单位时间内系统处理的任务数,后面三个数值分别为1分钟、5分钟、15分钟前到现在的平均值

2.3.2 第二行是行为进程信息

Tasks——总进程数
running——正在运行的进程数
sleeoing——休眠的进程数
stopped——终止的进程数
zombie——僵死的进程数

2.3.3 第三行是CPU的信息

us——用户占用
sy——内核占用
ni——优先级调度占用
id——空闲CPU,要了解空闲的CPU百分比,主要看%id部分
wa——I/O等待占用
hi——硬件中断占用
si——软件中断占用
st——虚拟化占用

2.3.4 第四行(KiB Mem)是内存的信息

total——总内存空间
free——空闲内存
used——已用内存
buff/cache——物理内存和交换内存的缓冲区总和

2.3.5 第五行(KiB Swap)是交换空间的信息

total——总交换空间
free——空闲交换空间
used——已用交换空间
avail Mem——可用物理空间

2.4 free -m命令查询的也是第四第五行内容

[root@xiaolei ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:           7802         396        7034          11         371        7124
Swap:          8063           0        8063

2.5top查看进程常用快捷指令

资源相关——内存、磁盘、I/O、CPU、网络、服务相关的资源信息

  • 按CPU使用率排序:在"top"命令界面,按下P键(大写),系统进程将按照CPU使用率进行排序。
  • 按内存使用量排序:在"top"命令界面,按下M键(大写),系统进程将按照内存使用量进行排序。
  • 按进程ID排序:在"top"命令界面,按下N键(大写),系统进程将按照进程ID进行排序。
  • 按用户排序:在"top"命令界面,按下U键(大写),系统进程将按照所属用户进行排序。
  • 切换显示完整命令行:在"top"命令界面,按下c键(小写),可以切换显示完整的命令行。
  • 切换显示线程信息:在"top"命令界面,按下H键(大写),可以切换显示线程信息。
  • 退出top:在"top"命令界面,按下q键(小写),可以退出"top"命令。

2.4 pgrep命令——查看特定进程信息

2.4.1 根据特定条件查询进程PID信息
可以根据进程的名字或其他属性来查找对应的PID,通常与其他命令一起使用,如kill命令

2.4.2 常用选项:
pgrep -l:显示进程名,缺省时只输出PID号
pgrep -U:指定特定用户
pgrep -t:指定终端
pgrep -a:显示进程名和PID
pgrep -c:仅显示匹配进程的数量,而不显示进程名和PID
pgrep -f:匹配进程名及其参数

2.5 jobs命令

2.5.1 jobs命令可以用于列出这些后台进程的状态信息

2.5.2 常用选项

jobs -l:显示所有后台进程的PID
jobs -p:显示所有后台进程的进程组ID
jobs -n:仅显示最近的后台进程
jobs -r:仅显示正在运行的后台进程
jobs -s:仅显示已停止的后台进程

2.6 pstree命令查看进程树

以树形结构列出进程信息

2.7 补充——tree+目录

树形结构呈现目录结构的工具

[root@xiaolei ~]# ls /market1
mesg  mesg1.tar.gz  mesg2.tar.bz2
[root@xiaolei ~]# tree /market1
/market1
├── mesg
├── mesg1.tar.gz
└── mesg2.tar.bz2

0 directories, 3 files

二、控制进程

1、进程的启动方式

1.1手工启动

1.1.1 前台启动:用户输入命令,直接执行程序
1.1.2 在命令行尾加入“&”符号——输出信息中包含后台任务序号、PID号

1.2调度启动

1.2.1 使用at命令,设置一次性计划任务
1.2.2 使用crontab命令,设置周期性计划任务

2、进程的前后台调度

2.1 Ctrl+Z组合键——将当前进程挂起,即调入后台并停止执行
2.2 fg命令——将后台进程恢复到前台运行,可指定任务序号

3、终止进程

3.1 Ctrl+C组合键——中断正在执行的命令
3.2 kill命令——kill用于终止指定PID号的进程
3.3 killall命令 ——killall用于终止指定名称相关的所有进程
3.4 kill -9命令 ——选项用于强制终止
3.5 pkill命令——根据特定条件终止相应的进程

常用选项:-U——根据进程所属的用户名终止相应进程

​ -t——根据进程所在的终端终止相应进程

3.6 kill命令补充说明

​ 我们经常会用到kill命令去杀死一个进程,但是有时会出现kill不成功的现象,这是就要用到kill -9。
之所以这两个命令会有区别是因为所发送的信号(Signal)是不同的。
默认情况下kill命令的参数为-15。
kill -15代表的信号为SIGTERM,这是告诉进程你需要被关闭,请自行停止运行并退出;
而kill -9代表的信号是SIGKILL,表示进程被终止,需要立即退出;
因此ki -9表示强制杀死该进程,这个信号不能被捕获也不能被忽略

三、at一次性任务设置

了解即可

四、crontab周期性任务设置

1、crontab计划任务管理

1.1crontab命令

1.1.1 按照预先设置的时间周期(分钟、小时、天、月、周)重复执行用户指定的命令操作
1.1.2 属于周期性计划任务
1.1.3 主要设置文件
①全局配置文件,位于文件:/etc/crontab
②系统默认的设置,位于目录:/etc/cron.*/
③用户定义的设置,位于文件:/var/apool/cron/用户名

1.2管理crontab计划任务

1.2.1 编辑计划任务——crontab -e [-u 用户名]
1.2.2 查看计划任务——crontab -l [-u 用户名]
1.2.3 删除计划任务——crontab -r [-u 用户名]

2、crontab任务配置的格式

2.1 分 时 日 月 周 +命令或脚本文件

字段说明
取值为0~59之间的任意整数
取值为0~23之间的任意整数
取值为1~31之间的任意整数
取值为1~12之间的任意整数
取值为0~7之间的任意整数,0或7代表星期日
命令要执行的命令或文件脚本

2.2时间数值的特殊表示方法

2.2.1 *——表示该范围内的任意时间
2.2.2 ,——表示间隔的多个不连续时间点
2.2.3 -——表示一个连续的时间范围
2.2.4 /——指定间隔的时间频率

2.3示例:

0 17 * * 1-5——周一到周五每天17:00
30 8 * * 1,3,5——每周一、三、五的8:30
0 8-18/2 * * *——8点到18点之间每隔2小时
0 * */3 * *——每三天
5 * * * * ls——每5分钟执行一次ls命令
30 6 * * 0 ls——指定每星期日的6:30执行ls命令
30 3 10,20 * * ls——每月10号和20号的3:30执行ls命令(“,”用来连接多个不连续的时段)
25 8-11 * * * ls——每天8~11点的第25分钟执行ls命令(“-”用来连接连续的时段)
*/15 * * * * ls——每15分钟执行一次ls命令(“/”用来表示间隔的时间频率)

2.4使用crontab -e命令编辑计划任务时注意事项

使用的命令和文件或执行脚本要使用绝对路径,命令可以用which+命令查询路径,文件或执行脚本可以用find命令查询

2.5补充

crontab -l -u命令——展示当前设定的定时任务
6:30执行ls命令
30 3 10,20 * * ls——每月10号和20号的3:30执行ls命令(“,”用来连接多个不连续的时段)
25 8-11 * * * ls——每天8~11点的第25分钟执行ls命令(“-”用来连接连续的时段)
*/15 * * * * ls——每15分钟执行一次ls命令(“/”用来表示间隔的时间频率)

2.4使用crontab -e命令编辑计划任务时注意事项

使用的命令和文件或执行脚本要使用绝对路径,命令可以用which+命令查询路径,文件或执行脚本可以用find命令查询

例如:

[外链图片转存中…(img-K6RtOqrP-1723618832214)]

2.5补充

crontab -l -u命令——展示当前设定的定时任务
crontab -r-u命令——删除所有定时任务,使用需谨慎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值