进程计划和任务管理

前言

进程即正在运行的程序,而如何去管理操作这些程序,这是我们应该知道和掌握的。下面让我们去好好了解一些这些知识。

一、什么是进程和程序

1. 程序(静态)

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

2. 进程(动态)

  • 在CPU及内存中运行的程序代码
  • 动态执行的代码
  • 父、子进程 (第一个始祖进程为init)

每个程序可以创建一个或多个进程

扩展:
进程:资源分配的最小单位
线程:程序执行的最小单位

二、查看进程

1. ps命令

格式 ps + [参数]

ps aux (查看静态进程统计信息)

参数含义:
a:显示终端上的所有进程信息,包括其它用户的进程
u:使用以用户为主的格式输出进程信息
x:显示当前用户在所有终端下的进程信息

[root@localhost ~]# ps aux
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.0  0.1 193940  7140 ?        Ss   07:16   0:04 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root          2  0.0  0.0      0     0 ?        S    07:16   0:00 [kthreadd]
USER:进程的用户
PID:进程的ID
%CPU:进程占用的CPU百分比
%MEM:占用内存的百分比
VSZ:该进程使用的虚拟内存量(KB)
RSS:该进程占用的物理内存量(KB)
TTY:启动进程的终端名。不是从终端启动的进程则显示为?
STAT:该行程的状态(D:不可中断的休眠状态;R:正在运行状态;S:处于休眠状态,可被唤醒;
T:停止状态,可能是在后台暂停或进程处于跟踪调试状态;z:僵尸进程,进程已经中止,但是部分程序还在内存当中)
START:该进程被触发启动时间
TIME:该进程实际使用CPU运行的时间
COMMAND:进程的启动命令

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

ps -elf(以长格式显示系统进程信息)

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

[root@localhost ~]# 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 - 48485 ep_pol 07:16 ?        00:00:04 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
1 S root          2      0  0  80   0 -     0 kthrea 07:16 ?        00:00:00 [kthreadd]


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

2.top命令(查看进程动态信息)

top常用命令:
P键:根据CPU使用百分比大小进行排序
M键:根据驻留内存大小进行排序
N键:根据启动时间进行排序
c键:切换显示命令名称和完整命令行
h键:可以获得 top程序的在线帮助信息
k键:根据提示输入指定进程的 PID 号并按 Enter 键终止对应的进程
q键:退出 top 程序
数字1键:显示CPU个数和状态
在这里插入图片描述
各个相关信息含义如下 :

第一行是任务队列信息
13:17:51  系统时间
up 6:00  系统已运行时长
4 user  当前登录用户数
load average: 0.00 0.01 0.05  系统负载,即单位时间内系统处理的任务数,后面三个数值分别为0分钟、1分钟、5分钟前到现在的平均值

第二行为进程信息
Tasks   总进程数
running   正在运行的进程数
sleeping   休眠的进程数
stopped   中止的进程数
zombie   僵死的进程数

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

第四行为内存的信息
total  总内存空间
free  空闲内存
used   已用内存
buff/cache  物理内存和交换内存的缓冲区总和

第五行为交换空间的信息
total  总交换空间
free  空闲交换空间
used  已用交换空间
avail Mem  可用物理空间

进程信息区各列解释:
PID  进程id
USER  进程所有者的用户名
PR   优先级
NI  谦让度值。负值表示高优先级,正值表示低优先级
VIRT  进程使用的虚拟内存总量,单位kb
RES  进程使用的物理内存大小,单位kb
SHR  共享内存大小,单位kb
S  进程状态
%CPU  上次更新到现在的CPU时间占用百分比
%MEM  进程使用的物理内存百分比
TIME+   进程使用的CPU时间总计,单位1/100秒
COMMAND  命令名/命令行

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

3.pgrep命令 (查询进程信息)

参数:
-l 选项可同时输出对应的进程名以及PID
-U 选项查询特定用户的进程
-t 选项查询在特定终端运行的进程

pgrep -l “log” #-l:显示进程名,缺省时只输出PID号
pgrep -l -U gcc -t tty2 #-U:指定特定用户 -t:指定终端

4.pstree命令 (以树形结构列出进程信息)

参数:
-p 选项使用时可以同时列出对应的PID号
-u 选项可以列出对应的用户名
-a 选项可以列出完整的命令信息

pstree -aup gy
在这里插入图片描述

三、控制进程

1.进程的启动

手工控制
  • 前台启动: 用户输入命令,直接执行程序
  • 后台启动: 在命令行尾加入“&”符号
    (当进程在后台时,用户可以在前台输入其他命令,不用等后台进程结束)
    在这里插入图片描述
调度启用
  • 使用at命令,设置一次性计划任务
  • 使用crontab命令,设置周期性计划任务

2. 进程前后台调度

  • Ctrl + Z组合键
    将当前进程挂起,即调入后台并停止执行(必须是前台命令还未结束时使用)

  • jobs 命令
    jobs [-l]
    查看处于后台的任务列表

  • fg 命令
    将后台进程恢复到前台运行,可指定任务序号

  • bg命令
    将后台进程恢复到后台运行,可指定任务序号

3.终止进程执行

  • Ctrl+C组合键
    当用户在前台执行某个进程时,可以按Ctrl+C组合键强制进行中断(如命令长时间没有响应的情况下)。

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

通过 kill 命令终止进程时,需要使用进程的 PID 号作为参数。无特定选项时,kill 命令将给该进程发送终止信号并正常退出运行,若该进程已经无法响应终止信号,则可以结合“-9” 选项强行终止进程。强制终止进程时可能会导致程序运行的部分数据丢失,因此不到不得已时不要轻易使用“-9”选项。

使用 killall 命令可以通过进程名称来终止进程,当需要结束系统中多个相同名称的进程时,使用 killall 命令将更加方便,效率更高。killall 命令同样也有“-9”选项。

  • pkill命令

使用 pkill 命令可以根据进程的名称、运行该进程的用户、进程所在的终端等多种属性终止特定的进程,大部分选项与 pgrep 命令基本类似,如“-U”(指定用户)、“-t”(指定终端) 等选项,使用起来非常方便
pgrep –l -U “gy” //确认目标进程相关信息3773 bash
pkill -9 -U “gy” //强行终止用户hackli 的进程
pgrep -l -U “gy” //确认目标进程已被终止

4.一次性计划任务 at命令

一次性计划任务
在 Linux 操作系统中,除了用户即时执行的命令操作以外,还可以配置在指定的时间、指定的日期执行预先计划的系统管理任务(如定期备份、定期采集监测数据)。
CentOS 系统中默认已安装了 at、cronie 软件包,通过 atd 和 crond 这两个系统服务实现一次性、周期性计划任务的功能,并分别通过 at、crontab 命令进行计划任务设置

使用at命令设置的计划任务只在指定的时间点执行一次,前提是对应的系统服务atd必须已经运行。需要注意的是,计划执行任务的时间、日期必须安排在当前系统的时刻之后, 否则将无法正确设置计划任务。
设置一次性计划任务时,在 at 命令行中依次指定计划执行任务的时间、日期作为参数
(若只指定时间则表示当天的该时间,若只指定日期则表示该日期的当前时间),确认后将进入带“at>”提示符的任务编辑界面,每行设置一条执行命令,可以依次设置多条语句,最后按 Ctrl+D 组合键提交任务。所设置的命令操作将在计划的时间点被依次执行。
在这里插入图片描述

root@localhost opt]# atq    #查看还未执行的at任务
1	Mon Aug 23 14:55:00 2021 a root
[root@localhost opt]# 

[root@localhost opt]# atrm 1   删除还未执行的at任务
Cannot find jobid 1
[root@localhost opt]# 

5.周期性计划任务 crontab命令

按照预先设置的时间周期 分钟、小时、天、月、周重复执行用户指定的命令操作

  • 属于周期性计划任务
  • 主要设置文件
    全局配置文件,位于文件: /etc/crontab
    系统默认的设置,位于目录: /etc/cron.*/
    用户定义的设置,位于文件: /var/spool/cron/用户名
管理crontab命令

常用选项:
-e:编辑计划任务列表。
-u:指定所管理的计划任务属于哪个用户,默认是针对当前用户(自己),一般只有 root 用户有权限使用此选项(用于编辑、删除其他用户的计划任务)。
-l:列表显示计划任务。
-r:删除计划任务列表。
下面将分别讲解 crontab 命令相关选项的使用。

常用方式:
编辑计划任务
crontab -e [-u 用户名]
#-u缺省默认是针对当前用户
查看计划任务
crontab -l [-u 用户名]
删除计划任务
crontab -r [-u 用户名]

任务配置格式:
分钟-小时-日期-月份-星期 命令或者脚本文件

字段说明
分钟取值为从0到59之间的任意整数
小时取值为从0到23之间的任意整数
日期取值为从1到31之间的任意整数
月份取值为从1到12之间的任意整数
星期取值为从0到7之间的任意整数,0或7代表星期日
命令要执行的命令或程序脚本

时间数值的特殊表示方法
• * 表示该范围内的任意时间
• , 表示间隔的多个不连续时间点
• - 表示一个连续的时间范围
• / 指定间隔的时间频率

例如:

  0 17 * * 1-5
周一到周五每天17:00

  30 8 * * 1,3,5
每周一、三、五的8点30分

  0 8-18/2 * * *
8点到18点之间每2小时

  0 * */3 * *
每3天

总结

  • 查看进程的命令(ps、 top、pgrep、 pstree)
  • 进程控制
    启动进程、调度进程、终止进程
  • at命令 设置计划任务 (一次性任务)
  • crontab计划任务的配置字段 (周期性任务)

努力去掌握如何管理进程,如何去计划性的设置周期性任务对未来的工作有很大的帮助。它可以大大节省每次重复操作的时间,也要熟练的掌握。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值