进程和计划任务管理(想提高工作效率吗?从计划工作任务开始)
Posted 老张学coding
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了进程和计划任务管理(想提高工作效率吗?从计划工作任务开始)相关的知识,希望对你有一定的参考价值。
进程和计划任务管理
一、进程
1.1、程序和进程的关系
- 程序
1、保存在硬盘、光盘等介质中的可执行代码和数据
2、文件中静态保存的代码
- 进程:
1、在CPU及内存中运行的程序代码
2、动态执行的代码
3、父、子进程
4、每个程序可以创建个或多个进程
1.2.查看进程
1.2.1、静态查询PS
**功能:**查看静态的进程统计信息
格式:
ps [选项] #查看静态的进程统计信息
选项说明:
a #显示终端上的所有进程,包括其它用户的进程
u #表示列出进程的用户
x #显示所有终端的进程
操作:
ps aux显示的进程11个字段解析:
#第一字段
USER #进程的用户
#第二字段
PID #进程的ID(进程号)
#第三字段
%CPU #进程占用的CPU百分比
#第四字段
%MEM #占用内存的百分比
#第五字段
VSZ #该进程使用的虚拟内存量(KB)
#第六字段
RSS #该进程占用的物理内存量(KB)
#第七字段
TTY #启动进程的终端名。不是从终端启动的进程则显示为?
#第八字段
STAT #该进程的状态
#第九字段
START #该进程被触发启动时间
#第十字段
TIME #该进程实际使用CPU运行的时间
#第十一字段
COMMAND #进程的启动命令
STAT的几种状态
D #不可中断的休眠状态
R #正在运行状态
S #处于休眠状态,可被唤醒
T #停止状态,可能是在后台暂停或进程处于跟踪调试状态
Z #僵尸进程,进程已经中止,但是部分程序还在内存当中
下面解释一下Z状态:僵尸进程
- 一个进程结束了,但是如果该进程的父进程已经先结束了,那么该进程就不会变成僵尸进程,因为每个进程结束的时候,系统都会扫描当前系统中所运行的所有进程,看有没有哪个进程是刚刚结束的这个进程的子进程,如果是的话,就由Init来接管它, 成为它的父进程,子进程退出后init会回收其占用的相关资源
- 但是当子进程比父进程先结束,而父进程又没有回收子进程,释放子进程占用的资源,此时子进程将成为一个僵进程
PS -eIf
-e #显示系统内的所有进程信息
-l #使用长格式显示进程信息
-f #使用完整的格式显示进程信息
操作:
PS -eIf 下的15个字段解释:
#第一字段
F #内核分配给进程的系统标记
#第二字段
S #进程的状态
#第三字段
UID #启动这些进程的用户
#第四字段
PID #进程的进程ID
#第五字段
PPID #父进程的进程号(如果该进程是由另一个进程启动的)
#第六字段
C#进程生命周期中的CPU利用率
#第七字段
PRI #进程的优先级(越大的数字代表越低的优先级)
#第八字段
NI #谦让度值用来参与决定优先级
#第九字段
ADDR #进程的内存地址
#第十字段
SZ #假如进程被换出,所需交换空间的大致大小
#第十一字段
WCHAN #若该进程在睡眠,则显示睡眠中的系统函数名
#第十二字段
STIME #进程启动时的系统时间
#第十三字段
TTY #进程启动时的终端设备
#第十四字段
TIME #运行进程需要的累计CPU时间
#第十五字段
CMD #进程的启动命令
注意:
tty终端 :Centos7系统,tty1表示图形界面,tty2-tty6表示文字界面,可以用Ctrl+Alt+F1-F6切换 pts说明是用远程工具连接的,比如xshell,后面的数字代表登录的时间顺序,越小证明登录的越早
1.2.2、动态查询top
**说明:**动态地显示进程信息
操作:
- 第一行是任务队列信息 (top)
12:29:40 #系统时间,也就是说现在多少点
up 21.17 #系统已运行时长
4 users #当前登录用户数
load average : 0.00,0.01,0.05 #系统负载,即单位时间内系统处理的任务数,后面三个数值分别为1分钟、5分钟、15分钟前到现在的平均值
- 第二行为进程信息 (Tasks)
186 total #总进程数186
1 running #1个正在运行的进程
185 sleeping #185个休眠的进程数
0 stopped #0个中止的进程数
0 zombie #0个僵尸的进程数
- 第三行为CPU的信息(%Cpu)
us #用户占用
sy #内核占用
ni #优先级调度占用
id #空闲CPU,要了解空闲的CPU百分比,主要看 %id 部分
wa #I/O等待占用
hi #硬件中断占用
si #软件中断占用
st #虚拟化占用
- 第四行内存的信息(KiB Mem)
total #总内存空间
free #空闲内存
used #已用内存
buff/cache #物理内存和交换内存的缓冲区总和
- 第五行交换空间的信息
total #总交换空间
free #空闲交换空间
used #已用交换空间
avail Mem #可用物理空间
top下12个字段的解释:
#第一字段
PRD #进程id
#第二字段
USER #进程所有者的用户名
#第三字段
PR #优先级
#第四字段
NI #谦让度值。负值表示高优先级,正值表示低优先级
#第五字段
VIRT #进程使用的虚拟内存总量,单位kb
#第六字段
RES #进程使用的物理内存大小,单位kb
#第七字段
SHR #共享内存大小,单位kb
#第八字段
S #进程状态
#第九字段
%CPU #上次更新到现在的CPU时间占用百分比
#第十字段
%MEM #进程使用的物理内存百分比
#第十一字段
TIME+ #进程使用的CPU时间总计,单位1/100秒
#第十二字段
COMMAND #命令名/命令行
top的常用命令
**说明:**不加选项的话就是动态查看进程
格式:直接用下面的字母
P 根据CPU使用百分比大小进行排序
M 根据驻留内存大小进行排序
N 根据启动时间进行排序
c 切换显示命令名称和完整命令行
h 可以获得top程序的在线帮助信息
k 根据提示输入指定进程的PID号并按Enter键终止对应的进程
q 退出top程序
数字1 显示CPU个数和状态
top查看线程
格式:
top -H
ps -T
操作:
1.2.3、查看进程信息pgrep
**说明:**根据特定条件查询进程PID信息
格式:
pgrep [选项] [参数] #没有选项的话,那么只会显示参数的进程号(默认)
选项说明:
-l #显示进程名
-u #指定特定用户
-t #指定终端
操作:
各选项的基本用法操作:
1.2.4、pstree查看进程树
功能:以树形结构列出进程信息
格式:
pstree
选项说明:
-A #各进程树之间的连接以ASCII字符来连接
-U #各进程树之间的连接以Unicode字符来连接,在某些终端界面下可能会有错误
-p #同时列出每个进程的PID
-u #同时列出每个进程的所属账号名称
连用:pstree -Aup #还会显示用户和PID
二、进程的启动方式
2.1、手工启动
- 前台启动:用户输入命令,直接执行程序
- 后台启动:在命令行尾加入“&”符号
例:多用于让后台自己去运行,我们无需跟踪它的状态,好了之后进行查询确认无误后使用即可
1、进行一个实验,使用本地磁盘cdrom内部的文件,要使用磁盘,首先挂载,然后我们人性化统计一下/mnt目录内部空间占用情况,发现4.3G,已经很大了,然后我们,复制/mnt目录包括目录下所有文件到/opt目录中,可以看到因为非常大,需要等待,我们已经无法继续操作了
遇到这种情况,有两个解决方法,一是复制会话,再继续操作,二就是让它在后台自己慢慢运行
2.2、调度启动
- 使用at命令,设置一次性计划任务
- 使用crontab命令,设置周期性计划任务
三、进程的前后台调度(diaodu)
- Ctrl+z组合键,将当前程序挂起,即调入后台并停止执行
操作:
2.jobs命令jobs [-l] ,查看处于后台的任务列表
操作:
3.fg命令将后台进程恢复到前台运行,可指定任务序号
操作:
四、终止进程的运行(要加)
- Ctrl +c kill ,killall
ctrl+c组合键
#中断正在执行的命令
kill、killall命令
#kill用于终止指定PID号的进程
# killall用于终止指定名称相关的所有进程
#-9选项用于强制终止
格式:
kill -9 进程号 #强制终止,(能不用就不用,可能导致缓存数据的丢失)
killall -9 名称 #名称可以是vim等
思路:
- 我们先把vim /etc/fstab 以及vim /etc /profile用CTRL+Z将他调入后台并停止
- 然后jobs -l查看进程号
- 最后用killall -9 vim 杀死进程
操作:
**注:**kill -9 2010和kill -9 2028在下图中就不示范了,很简单,kill -9 + 进程号
- pkill命令
**说明:**根据特定条件终止相应的进程
格式:
选项说明:
-U #根据进程所属的用户名终止相应进程
-t #根据进程所在的终端终止相应程序
五、计划任务管理
5.1、at命令
一次性计划任务
at 【HH:MM】【yyyy-mm-dd】# 时,分,年,月,日
atq #查看未执行的任务列表
atrm 【任务序号】#删除第一条任务
实例操作:
5.2、计划任务管理crontab
5.2.1 周期性计划任务的概念
• 按照预先设置的时间周期 分钟、小时、天、月、周重复执行用户指定的命令操作
• 属于周期性计划任务
5.2.2、 crontab的主要配置文件
- 全局配置文件,位于文件: /etc/crontab(保持默认值)
- 系统默认的设置,位于目录: /etc/cron.*/(保持默认值)
- 用户定义的设置,位于文件: /var/spool/cron/用户名
5.2.3、 管理crontab计划任务
crontab -e [-u 用户名] #编辑计划任务,-u缺省时表示当前用户
crontab -l [-u 用户名] #查看计划任务
crontab -r [-u 用户名] #删除计划任务
5.2.4、 编辑crontab的格式
5.2.5、 编辑crontab计划任务的三种方法
- crontab -e 进入编辑页面直接编辑并保存退出
- echo ‘30 7 * * 6 /usr/bin/systemctl httpd restart’ >> /var/spool/cron/ root
将编辑的任务重定向追加到crontab的配置文件中,也可以进入交互页面直接编辑(vim /var/spool/cron/root)
输入 vim /var/spool/cron/root,进入交互页面
- vim /etc/crontab 进入全局配置文件编辑并保存退出
5.2.6 删除任务列表(crontab -r)
以上是关于进程和计划任务管理(想提高工作效率吗?从计划工作任务开始)的主要内容,如果未能解决你的问题,请参考以下文章