进程和计划任务管理(想提高工作效率吗?从计划工作任务开始)

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)

  1. 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等

思路:

  1. 我们先把vim /etc/fstab 以及vim /etc /profile用CTRL+Z将他调入后台并停止
  2. 然后jobs -l查看进程号
  3. 最后用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)

以上是关于进程和计划任务管理(想提高工作效率吗?从计划工作任务开始)的主要内容,如果未能解决你的问题,请参考以下文章

点晴OA的工作日志工作报告工作计划强强联手提高效率

linux计划任务 进程管理

2019年个人计划

高效管理工作计划,飞项这款免费软件简单实用又强大!

如何提升团队工作效率

Linux系统管理——进程和计划任务