进程和计划任务管理

程序和进程的关系

  • 程序
    • 保存在硬盘、光盘等介质中的可执行代码和数据
    • 静态保存的代码
  • 进程
    • 在CPU及内存中运行的程序代码
    • 动态执行的代码
    • 父、子进程
      • 每个程序可以创建一个或多个进程

进程是程序运行的过程,称之为动态,有生命周期及运行状态

查看进程信息 -ps

- ps命令

- 查看静态的进程统计信息 aux

[root@localhost ~]#ps aux
在这里插入图片描述

USER:启动此进程的用户账号的名称
PID:该进程再系统中数字ID号(唯一)
%CPU:CPU占用的百分比
%MEM:占用内存的百分比
VSZ:该进程使用的虚拟内存(KB)
RSS:进程占用的实际内存(物理内存(都是以KB作为单位的))
TTY:该进程在哪个终端上运行(不是从终端启动的进程则视为“?”)(pts表示远程终端)
STAT:该进程的状态(R:正在运行状态;S:处于休眠状态,可被唤醒;  T:停止状态,可能是在后台暂停或进程处于跟踪调试状态;Z:僵尸进程,                                                                         进程已经终止,但是部分程序还在内存当中)
D:系统守护进程
T:调式、程序执行一般停止
R:该程序目前正在运作,或者是可被运作
S:该程序目前正在睡眠当中(可说是idle状态),但可被某些讯号(siqnal)唤醒。
T:该程序目前正在侦测或者是停止了
Z:该程序应该已经终止,但是其父程序却无法正常的终止他,造成zombie(疆尸)程序的状态D不可中断状态
(它们含意如下:
<:表示进程运行在高优先级上
N:表示进程运行在低优先级上
L:表示进程有页面锁定在内存中
s:表示进程是控制进程
l:表示进程是多线程的
+:表示当前进程运行在前台
D:系统守护进程
T:调式、程序执行一般停止)


START:启动该进程的时间。
TIME:该进程占用的CPU时间
COMMAND:启动该进程的命令的名称
  • 查看静态的进程统计信息
    [root@localhost ~]#ps -elf

在这里插入图片描述

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

各列的解释:

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

僵尸进程


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

进程状态。常见的状态有以下几种:
-D:不可被唤醒的睡眠状态,通常用于I/O情况。
-R:该进程正在运行。
-S:该进程处于睡眠状态,可被唤醒。
-T:停止状态,可能是在后台暂停或进程处于除错状态。
-W:内存交互状态(从2.6内核开始无效)。
-X:死掉的进程(应该不会出现)。
-Z:僵尸进程。进程已经中止,但是部分程序还在内存当中。
-<:高优先级(以下状态在BSD格式中出现)。
-N:低优先级。
-L:被锁入内存。
-s:包含子进程。
-l:多线程(小写L)。
-+:位于后台。
-C:进程占用CPO的百分比。

查看进程信息top

  • top命令
    • 查看动态的进程排名信息
      [root@localhost ~]# top

在这里插入图片描述

上述输出信息中,开头的部分显示了系统任务(Tasks)、CPU占用、内存占用(Mem)、交换空间(Swap)等汇总信息,汇总信息下方依次显示当前进程的排名情况。相关信息的含义表述如下。
uptime
20:28:48 //当前时间

up 5:07 //系统运行时间,说明此服务器连续运行了5分07秒了

user当前登录用户数
load average:0.00,0.01,0.05系统负载,即任务队列的平均长度。三个数值分别为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,可用物理空间。

详细说明
Tasks:215 total 进程总数

1 running 正在运行的进程数

214 sleeping 睡眠的进程数

0 stopped 停止的进程数

0 zombie 僵尸进程数

%Cpu(s):0.0 us 系统用户进程使用CPU百分比。

0.0 sy 内核中的进程占用CPU百分比 优先级调度占用

0.0 ni 用户进程空间内改变过程优先级的进程占用CPU百分比

100.0 id 空闲CPU百分比

0.0 wa cpu等待I/O完成的时间总量
实验:
终端1:执行:top
终端2:dd if=/dev/zero of=/a.txt count=10 bs=100M
终端3:dd if=/dev/zero of=/a.txt count=10 bs=100M

0.0 hi (了解一下)硬中断消耗时间 硬件中断占用
硬中断,占的CPU百分比。
硬中断是由硬件产生的,比如像磁盘,网卡,键盘,时钟等。每个设备或设备集都有它自己的IRQ(中断请求)。基于IRQ,CPU可以将相应的请求分发到对应的硬件驱动上(ps:硬件驱动通常是内核中的一个子程序,而不是一个独立的进程)。
#hi -> Hardware IRQ:The amount of time the CPU has been servicing hardware interrupts.

0.0 si (了解一下)软中断消耗时间 软件中断占用
软中断,占的CPU百分比。
通常,软中断是一些对I/O的请求。这些请求会调用内核中可以调度I/O发生的程序。对于某些设备,I/O请求需要被立即处理,而磁盘I/O请求通常可以排队并且可以稍后处理。根据I/O模型的不同,进程或许会被挂起直到I/O完成,此时内核调度器就会选择另一个进程去运行。I/O可以在进程之间产生并且调度过程通常和磁盘I/O的方式是相同。
#si -> Software Interrupts.: The amount of time the CPU has been servicingsoftware interrupts.

0.0 st (steal 偷)虚拟化占用。要了解空闲的CPU百分比,主要看id部分。
st:虚拟机偷取物理的时间。比如:物理机已经运行了KVM,XEN虚拟机。KVM虚拟机占用物理机的cpu时间

Mem:3861508 total 物理内存总量
623644 free 空闲内存总量
826800 used 使用的物理内存总量
2411064 buff/cache 用作内核缓存的内存量。(和free -k 一个意思)
Swap: 4095996 total 交换区总量
4095996 free 空闲交换区总量
0 used 使用的交换区总量
2605720 avail Mem 总的可利用内存是多少

top命令全屏操作界面快捷键


默认 3s 刷新一次,按 s 修改刷新时间按空格:立即刷新。
P:按CPU排序
M:按内存排序
T:按时间排序
P:进程IP,查看某个进程状态
N 键根据启动时间进行排序
数字键 1 :显示每个内核的 CPU 使用率u/U:指定显示的用户
h:可以获得 top 程序的在线帮助信息
q 键可以正常地退出 top 程序

ps:若通过top排名工具发现某个进程CPU占用率非常高,需要终止该进程的运行,可以在top操作界面中按 k 键,然后在列表上方将会出现"PID to signal/kill [default pid=3180]:"的提示信息,根据提示输入指定进程的 PID号并按Enter键,出现“Send pid 5597 signal [15/sigterm]“的二次确认的提示信息,然后按Enter键确认即可终止对应的进程。

行进程信息

PID进程id

USER 进程所有者的用户名

PR 优先级(由内核动态调整),用户不能

NI 进程优先级。nice值。负值表示高优先级,正值表示低优先级,用户可以自己调整。

VIRT (virtual memory usage) 虚拟内存,是进程正在使用的所有内存(ps中标为VSZ)VIRT:virtual
memory usage 虚拟内存
1、进程“需要的“虚拟内存大小,包括进程使用的库、代码、数据等
2、假如进程中请100m的内存,但实际只使用了10m,那么它会增长100m,而不是实际的使用量

RES (resident memory usage) 是进程所使用的物理内存。实际实用内存(ps中标为RSS)
RES: resident memory usage 常驻内存
1、进程当前使用的内存大小,但不包括swap out
2、包含其他进程的共享
3、如果申请100m的内存,实际使用10m,它只增长10m,与VIRT相反
4、关于库古用内存的情况,它只统计加载的库文件所古内存大小

SHR共享内存大小,单位 kb SHR:shared memory共享内存
1、除M了自身进程的共享内存,也包括其他进程的共享内存
2、虽然进程只使用了几个共享库的函数,但它包含了整个共享库的大小
3、计算某个进程所占的物理内存大小公式:RES-SHR 4、swap out后,它将会降下来

s 进程状态
D=不可中断的睡眠状态
R=运行中或可运行S=睡眠中
T=已跟踪/已停止Z=僵停

%CPU 上次更新到现在的CPU时间占用百分比

MEM 进程使用的物理内存百分比

TIME+ 进程使用的CPU时间总计,单位1/100秒

COMMAND 命令名/命令行

查看进程信息 pgrep

  • pgrep命令
    • 根据特定条件查询进程 PID 信息
      -l:显示进程名
      -U:指定特定用户
      -t:指定终端

在这里插入图片描述

查看进程信息pstree

  • pstree命令
    • 以树形结构列出进程信息

      -a:显示完整信息
      -u:列出对应用户名
      -p:列出对应PID号

在这里插入图片描述

在这里插入图片描述

进程的启动方式

  • 手动启动
    • 前台启动:用户输入命令,直接执行程序
    • 后台启动:在命令行尾加入“&”符号

在这里插入图片描述
输出信息中包括后台任务序号、PID号。

  • 调度启动
    • 使用at命令,设置一次性计划任务
    • 使用crontab命令,设置周期性计划任务

进程的前后台调度

  • Ctrl+Z组合键
    • 将当前进程挂起,即调入后台并停止执行
  • jobs命令
    • 查看处于后台的任务列表
  • fg命令
    • 将后台进程恢复到前台运行,可指定任务序号
      在这里插入图片描述

终止进程的运行

  • Ctrl+C组合键

    • 中断正在执行的命令
  • kill、killall命令

    • kill用于终止指定PID号的进程
    • killall用于终止指定名称的所有进程
    • -9选项用于强制终止
  • pkill命令

    • 根据特定条件终止相应的进程
    • 常用命令选项
      • -U:根据进程所属的用户名终止相应进程
      • -t:根据进程所在的终端终止相应进程
        在这里插入图片描述

当用户在前台执行某个进程时,可以按Ctrl+c组合键强制进行中断(如命令长时间没有响应的情况下)。
中断前台进程的运行后,系统将返回命令行提示符状态等待用户输入新的命令。当按Ctrl十C组合键无法终止程序或者需要结束在其他终端或后台运行的进程时,可以使用专用的进程终止工具kill、killall和pkill。

计划任务管理 at

  • at命令
    • 一次性计划任务
      在这里插入图片描述
      at> < EOT > (按Ctrl+D键提交任务)

查看未执行的任务列表
在这里插入图片描述
删除第六条任务,再查询就不会查看到那个命令

在这里插入图片描述

计划任务做什么:
1、定期备份web 数据库
2、定期采集检测数据
3、find 5天以外的数据删除
微服务java(日志)

计划任务管理 crontab

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

crontab 守护进程会自动检查 /etc/crontab 文件、/etc/cron.d目录及/var/spool/cron/目录中的改变,如果发现配置有更改,它们会被载入内存,所有放某个crontab文件改变后并且不需要重新启动crond守护进程就可以设置生效。

在这里插入图片描述

  • 管理crontab计划任务
    • 编辑计划任务
      crontab -e [-u 用户名]
      -e编辑计划任务,-u指定用户去管理计划任务
      默认是针对当前用户(一般只有root用户可以指定计划任务)

    • 查看计划任务
      crontab -l [-u 用户名]

    • 删除计划任务
      crontab -r [-u 用户名]

crontab任务配置的格式

在这里插入图片描述

字段说明
分钟取值为从0到59之间的任意整数
小时取值为从0到23之间的任意整数
日期取值为从1到31之间的任意整数
月份取值为从1到12之间的任意整数
星期取值为从0到7之间的任意整数,0或7代表星期日
命令要执行的命令或程序脚本
  • 时间数值的特殊表示方法
    • “*”表示该范围内的任意时间
    • “,”表示间隔的多个不连续时间点
    • “-”表示一个连续的时间范围
    • “/”指定间隔的时间频率
  • 应用实例
    • 30 18 * * 1-6 周一到周六每天18:30
    • 45 6 * * 2,4,6 每周二、四、六的6:45
    • 0 6-18/2 * * * 6点到18点之间每2小时
    • 0 * */2 * * 每2天

总结

  • 查看进程的命令(ps、top、pgrep、pstree)
  • 进程控制
    • 启动进程、调度进程、终止进程
  • at命令设置计划任务
  • crontab计划任务的配置字段
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值