进程和计划任务管理

前言

有时候感觉系统运行时没有以往那么快了,这也许是打开的某个进程占用率过高导致的,所以这时候就要用到查看进程并进行控制。计划任务管理可谓是实现自动化的一小步了,它可以帮忙实现一些周期性的操作,从而使用户不用每天或每周都要进行同样的操作。

一、关于进程

1.程序和进程的关系

程序
执行的过程,保存在硬盘、光盘等介质中的可执行代码和数据
静态保存的代码

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

程序和进程区别:程序是静态的,进程是动态的。
进程和线程的区别:进程是操作系统资源调度的基本单位,线程是任务的调度执行的基本单位

2.查看进程信息

ps命令
查看静态的进程统计信息
[root@localhost ~]# ps -aux
-a:显示当前终端下的所有进程信息,包括其他用户的进程。与"x"选项结合时将显示系统中所有的进程信息。
-u:使用以用户为主的格式输出进程信息。
-x:显示当前用户在所有终端下的进程信息。
在这里插入图片描述
标题代表的含义:

USER启动该进程的用户账号的名称
PID该进程在系统中的数字ID 号,在当前系统中是唯一的
%CPUCPU占用的百分比
%MEM内存占用的百分比
VSZ该进程使用的虚拟内存量(KB)
RSS该进程占用的物理内存量(KB)
TTY表明该进程在哪个终端上运行。不是从终端启动的进程则显示为?
STAT该进程的状态
START启动该进程的时间
TIME该进程占用的CPU时间
COMMAND启动该进程的命令的名称

进程状态常见的状态有以下几种:
-D:不可被唤醒的睡眠状态,通常用于 I/O 情况。
-R:该进程正在运行。
-S:该进程处于睡眠状态,可被唤醒。
-T:停止状态,可能是在后台暂停或进程处于除错状态。
-W:内存交互状态(从 2.6 内核开始无效)。
-X:死掉的进程(应该不会出现)。
-Z:僵尸进程。进程已经中止,但是部分程序还在内存当中。
-<:表示进程运行在高优先级上(以下状态在 BSD 格式中出现)。
-N:表示进程运行在低优先级上。
-L:表示进程有页面锁定在内存中。
-s:表示进程是控制进程。
-l:表示进程是多线程。
-+:表示位于后台的进程组。
-C:进程占用CPU的百分比
下图简单的表示了一下q.txt在另一个终端运行时,停止之前和停止之后的状态
在这里插入图片描述

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

3.查看静态的进程统计信息

ps -elf
-e:显示系统内的所有进程信息。
-1:使用长格式显示进程信息。
-f:使用完整的格式显示进程信息。
在这里插入图片描述
标题代表的含义:

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

4.查看进程信息top

top命令
查看动态的进程排名信息
[root@localhost ~]# top
在这里插入图片描述

列表含义:

top - 17:24:14当前时间
up 1:49系统运行时间
4 users当前登陆用户数量
load average: 0.00, 0.01, 0.05系统负载,即任务队列的平均长度。 三个数值分别为 1 分钟、5 分钟、15 分钟前到现在的平均值
Tasks: 197 total进程总数
1 running正在运行的进程数
195 sleeping睡眠的进程数
1 stopped停止的进程数
0 zombie僵尸进程数
%Cpu(s)系统用户进程使用 CPU 百分比
sy内核中的进程占用 CPU 百分比
ni用户进程空间内改变过优先级的进程占用 CPU 百分比
id空闲 CPU 百分比
waI/O等待占用
hi硬件中断占用
si软件中断占用
st虚拟化占用
KiB Mem内存占用
KiB Swap交换空间
total交换区总量
used使用的交换区总量
free空闲交换区总量
avail Mem总的可利用内存是多少

PID:进程 id
USER:进程所有者的用户名
PR:优先级(由内核动态调整),用户不能
NI:进程优先级(nice 值,负值表示高优先级,正值表示低优先级,用户可以自己调整)
VIRT(virtual memory usage):虚拟内存,是进程正在使用的所有内存(ps 中标为 VSZ)
RES(resident memory usage):是进程所使用的物理内存,实际实用内存(ps 中标为 RSS)
SHR:共享内存大小,单位(kb)
S:进程状态;
%CPU:上次更新到现在的 CPU 时间占用百分比
%MEM:进程使用的物理内存百分比
TIME+:进程使用的 CPU 时间总计,单位 1/100 秒
COMMAND:命令名/命令行

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

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

5.查询进程信息pgrep

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

在这里插入图片描述
在这里插入图片描述

6.以树形结构列出进程信息pstree

pstree 命令默认情况下只显示各进程的名称,
结合以下常用的参数使用:
-p:选项使用时可以同时列出对应的PID号
-u:选项可以列出对应的用户名
-a:选项可以列出完整的命令信息

执行如下的“pstree -aup”命令可以查看当前系统的进程树,包括各进程对应的PID 号、用户名、完整命令等信息。从输出结果中可以看出,systemd 进程确实是 Linux 操作系统中所有进程的“始祖”
在这里插入图片描述

二、控制进程

1.进程的启动方式

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

由用户手工输入命令或者可执行程序的路径,可以至少启动一个进程。根据该进程是否需要占用当前的命令终端,手工启动又可以分为前台启动和后台启动。

前台启动:
进程在前台运行(如执行“ls -l”命令)时,用户必须等到该进程执行结束并退出以后才能继续输入其他命令,大多数命令操作在前台启动运行。
后台启动:
进程在后台运行时,用户可以继续在当前终端中输入其他命令,而无须等待该进程结束,适用于运行耗时较长的操作。启动后台进程需要使用“&”操作符,将“&”操作符放在要执行命令的最后面,进程启动后会直接放入后台运行,而不占用前台的命令操作界面,方便用户进行其他操作。
例:cp /dev/cdrom /home/cetos7.iso &
当使用cp 命令从光盘中制作镜像文件时,由于需要复制的数据较多,耗时较长,因此可结合“&” 符号将复制操作放到后台运行,以便用户可以继续执行其他命令
在这里插入图片描述

2.调度启动

在服务器维护工作中,经常需要执行一些比较费时而且较占用资源的任务(如数据备份),这些任务更适合在相对空闲的时候(如夜间)进行。这时就需要用户事先进行调度安排,指定任务运行的时间,当系统到达设定时间时会自动启动并完成指定的任务。

调度启动的计划任务进程均在后台运行,不会占用用户的命令终端。

进程的调度启动可以通过 at、crontab 命令进行设置,其中 at 命令用于设置一次性(如12:15 时重启网络服务)计划任务,crontab 命令用于设置周期性运行(如每周五 17:30 备份数据库)的计划任务。

2.1.挂起当前的进程

当Linux操作系统中的命令正在前台执行时(运行尚未结束),按Ctrl+Z组合键可以将当前进程挂起(调入后台并停止执行),这种操作在需要暂停当前进程并进行其他操作时特别有用。

例如,打包usr并且调入后台 ,可以按Ctrl+Z 组合键将该下载任务调入后台并暂停执行。fg 1恢复
tar zcvf usr.tar.gz /usr/
在这里插入图片描述

2.2.终止进程执行

当用户在前台执行某个进程时,可以按Ctrl+C组合键强制进行中断(如命令长时间没有响应的情况下)。
中断前台进程的运行后,系统将返回命令行提示符状态等待用户输入新的命令。当按 Ctrl+C 组合键无法终止程序或者需要结束在其他终端或后台运行的进程时, 可以使用专用的进程终止工具 kill、killall 和 pkill
1.使用 kill 命令终止进程
在这里插入图片描述
2.使用 killall 命令终止进程
使用 killall 命令可以通过进程名称来终止进程,当需要结束系统中多个相同名称的进程时,使用 killall 命令将更加方便,效率更高。killall 命令同样也有“-9”选项。
例如,执行如下的“killall -9 vim”命令可将所有名为 vim 的进程都强行终止
在这里插入图片描述
(3)使用 pkill 命令终止进程
使用 pkill 命令可以根据进程的名称、运行该进程的用户、进程所在的终端等多种属性终止特定的进程,大部分选项与 pgrep 命令基本类似,如“-U”(指定用户)、“-t”(指定终端) 等选项,使用起来非常方便。
例如,若要终止由用户 hmj 启动的进程(包括登录 Shell),可以执行以下操作。
su - hmj
vim tst.txt &
[root@localhost ~]# pgrep –l -U “hmj” //确认目标进程相关信息3773 bash
[root@localhost ~]# pkill -9 -U “hmj” //强行终止用户hackli 的进程
[root@localhost ~]# pgrep -l -U “hmj” //确认目标进程已被终止
在这里插入图片描述

2.3.计划任务管理at

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

at命令
一次性计划任务
at [HH:MM] [yyyy-mm-dd]
ctrl+d提交任务
在这里插入图片描述
对于已经设置但还未执行(未到时间点)的计划任务,可以通过 atq 命令进行查询。但已执行过的 at 任务将不会再出现在列表中。具体操作如下:

若要删除指定编号的 at 任务,可以使用 atrm 命令。删除后的 at 任务将不会被执行, 并且不会显示在 atq 命令的显示结果中,但已经执行过的任务无法删除。
具体操作如下:
在这里插入图片描述

2.4.计划任务管理crontab

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

(2)管理crontab计划任务
编辑计划任务
crontab -e [-u 用户名]
不加用户名是编辑当前用户
查看计划任务
crontab -l [-u 用户名]
删除计划任务
crontab -r [-u 用户名]

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

时间数值的特殊表示方法
*表示该范围内的任意时间
,表示间隔的多个不连续时间点
-表示一个连续的时间范围
/指定间隔的时间频率
在这里插入图片描述
在这里插入图片描述

总结

本次的内容较以往而言可谓是偏多了,但是整体的命令操作倒还算正常,只是内容过多,可能会导致混乱,方法多种多样,主要还是根据个人习惯来决定主用哪个命令。计划任务管理是个可以帮助自身缓解一些经常要操作的命令,个人建议crontab一定要记住。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值