进程和计划任务管理
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了进程和计划任务管理,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含13560字,纯文字阅读大概需要20分钟。
内容图文
学习目标:
一、查看进程
二、控制进程
学习内容:
一、查看进程
所谓进程就是系统中正在运行的程序,每当我们执行一个程序时,对于操作系统来讲就是创建了一个进程,在这个过程中操作系统对进程资源的分配和释放。
可以认为进程就是一个程序的一次执行过程,在Linux系统中执行的第一个进程是init,它是所有进程的祖先最终都会落到进程号为1的init进程身上。
查看当前进程,而 ps 命令就是最基本,同时也是非常强大的进程查看命令————使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等。
1)ps命令,查看静态的进程统计信息
ps命令:用来列出系统中当前运行的那些进程
ps命令:列出的是当前那些进程的快照,就是执行ps命令的那个时刻的那些进程,
top命令:可以动态的显示进程信息
ps参数:
?a:显示当前终端下的所有进程信息,包括其他用户的进程。与x选项结合时将显示系统中所有的进程信息。
?u:使用以用户为主的格式输出进程信息。
?x:显示当前用户在所有终端下的进程信息。
?-e:显示系统内的所有进程信息。
?-l:使用长格式显示进程信息
?-f:使用完整的格式显示进程信息
1)执行如下的px aux命令后,将以简单列表的形式显示出进程信息
? USER:启动该进程的用户账号的名称
? PID :该进程在系统中的ID号。
? %CPU:该进程使用的 CPU 资源百分比;
? %MEM:该进程所占用的物理内存百分比;
? VSZ :该进程使用掉的虚拟内存(非swap)大小,默认单位 (Kbytes)
? RSS :该进程占用常驻内存大小(物理内存),默认单位 (Kbytes)
?TTY :该进程是在那个终端上运行,若与终端无关,则显示 ?,另外, tty1-tty6 是本机上登录的终端,若为 pts/0 等等的,则表示为由网络远程连接到主机的。
? STAT:该程序当前的状态,主要的状态有:
R :该程序目前正在运作,或者是可被运作;
S :该程序目前正在睡眠当中 (暂时没正在运行,后台挂着,通常是系统服务或网络服务);
Z :该程序应该已经终止,但是其父程序却无法正常的终止他,造成 zombie (疆尸) 程序的状态
<:高优先级
N :低优先级
s:父进程
+:前台进程
? START:该进程被启动的时间;
? TIME :该进程实际使用 CPU 的时间。
? COMMAND:启动该进程的命令的名称
以上显示的%MEM、VSZ和RSS,其中VSZ全称为Virtual Memory Size,RSS全称为Resident Set Size,而MEM则是RSS占全部内存的百分比。
VSZ表示虚拟内存大小,
RSS表示驻留物理内存的内存大小。
前者VSZ并没有真正占用物理内存,只是划分了地址空间,并没有建立虚拟地址与物理内存的映射——这也是Linux常用的优化方法,如COW,都是在真正需要的时候,才分配资源。
所以当查看哪个进程占用内存过多时,我们只要查看RSS列,而非VSZ。因为某些服务经常一启动就申请了大量的内存,但实际并没有使用,代表服务如java虚拟机。
说明:
僵尸进程的产生:
进程在退出的过程中,进程占有的所有资源将被回收,但在进程表中存储的该进程的信息,包括进程号 PID,退出状态,运行时间等。于是进程就只剩下这个空壳,故称为僵尸。处于僵尸状态的进程会等待其父进程释放其所有的数据结构。
如何处理僵尸进程:
当系统中出现了僵尸进程时,我们是无法通过 kill 命令把它清除掉的(因为该进程已经被认为已经死掉了)。但是我们可以杀死它的父进程,让它变成孤儿进程,孤儿进程将被 init 进程所收养,并由 init 进程收集它们的完成状态。
2)执行ps -elf命令,则将以长格式显示系统中的进程信息,并包含更丰富的内容,如ppid,表示对应进程的父进程信息
F:进程标志,说明这个进程的权限,号码4代表是root,1则代表仅可被复制(fork),而无法实际执行(exec)
UID:进程的用户
PID:进程的标识号
PPID:父进程
C:cpu的使用率
PRI:进程的优先级(priority) ,被cpu所执行的优先级,数值越小越优先 ,数值越高优先级
NI:谦让值(nice谦让值为-20~19) 数值越高优先值越低
ADDR、 SZ(使用掉的内存大小)、 WCHAN:都与内存相关
STIME:开启程序的时间
TTY:在哪个终端上运行
TIME:占用cpu的时间
CMD:终端上进程的名字
2、top命令,查看进程的动态信息
top 命令用于动态的监控进程活动与系统负载信息。在全屏的界面中
P键根据CPU占用情况对进程列表进行排序,
M键根据内存占用情况进行排序
N键根据启动时间进行排序
h键可以获得top程序的在线帮助
q键退出top程序
直接运行top命令
我们解释一下命令的输出。top 命令的输出内容是动态的,默认每隔 3 秒刷新一次。命令的输出主要分为两部分:
第一部分是前五行,显示的是整个系统的资源使用状况,我们就是通过这些输出来判断服务器的资源使用状态的;
第二部分从第六行开始,显示的是系统中进程的信息;
我们先来说明第一部分的作用。
top命令执行结果的前五行为系统整体的统计信息,代表含义如下:
第一行为任务队列信息,具体内容如表所示:
内 容 说 明
21:17:00 系统当前时间
up 9:47 系统的运行时间.本机己经运行 0 天 9 小时 47 分钟
2 users 当前系统的登录用户数
load average: 0.00,0.01,0.05 系统在之前 1 分钟、5 分钟、15 分钟的平均负载。如果 CPU 是单核的,则这个数值超过 1 就是高负载:如果 CPU 是四核的,则这个数值超过 4 就是高负载 (这个平均负载完全是依据个人经验来进行判断的,一般认为不应该超过服务器 CPU 的核数)
第二行为进程信息,具体内容如表所示:
内 容 说 明
Tasks: 150 total 当前系统中的进程总数
1 running 正在运行的进程数
149 sleeping 睡眠的进程数
0 stopped 正在停止的进程数
0 zombie 僵尸进程数。如果不是 0,则需要手工检査僵尸进程
第三行为 CPU 信息,具体内容如表所示:
内 容 说 明
0.1 us 用户进程占用的 CPU 百分比
0.1sy 系统内核进程占用的 CPU 百分比
0.0ni 改变过优先级的用户进程占用的 CPU 百分比
99.7id 空闲 CPU 占用的 CPU 百分比
0.1wa 等待输入/输出的进程占用的 CPU 百分比 wait
0.0hi 硬中断请求服务占用的 CPU 百分比
0.1si 软中断请求服务占用的 CPU 百分比
0.0st st(steal time)意为虚拟时间百分比,就是当有虚拟机时,虚拟 CPU等待实际CPU的时间百分比
wa:
CPU 等待磁盘 IO 操作的时间。和 CPU 的处理速度相比,磁盘 IO 操作是非常慢的。有很多这样的操作,比如:CPU 在启动一个磁盘读写操作后,需要等待磁盘读写操作的结果。在磁盘读写操作完成前,CPU 只能处于空闲状态。Linux 系统在计算系统平均负载时会把 CPU 等待 IO 操作的时间也计算进去,所以在我们看到系统平均负载过高时,可以通过 wa 来判断系统的性能瓶颈是不是过多的 IO 操作造成的。
hi & si:
这两个值表示系统处理中断消耗的时间。中断分为硬中断和软中断,hi 表示处理硬中断消耗的时间,si 表示处理软中断消耗的时间。硬中断是硬盘、网卡等硬件设备发送给 CPU 的中断消息,当 CPU 收到中断消息后需要进行适当的处理(消耗 CPU 时间)。软中断是由程序发出的中断,最终也会执行相应的处理程序(消耗 CPU 时间)。
st:
只有 Linux 在作为虚拟机运行时 st 才是有意义的。它表示虚机等待 CPU 资源的时间(虚机分到的是虚拟 CPU,当需要真实的 CPU 时,可能真实的 CPU 正在运行其它虚机的任务,所以需要等待)。
第四行为物理内存信息,具体内容如表所示:
内 容 说 明
Mem: 1863252 total 物理内存的总量,单位为KB
172208 used 己经使用的物理内存数量
1429964 free 空闲的物理内存数量。
261080 buff/cache 作为缓冲的内存数量
我们还要解释一下缓冲(buffer)和缓存(cache)的区别:
缓存(cache)是在读取硬盘中的数据时,把最常用的数据保存在内存的缓存区中,再次读取该数据时,就不去硬盘中读取了,而在缓存中读取。
缓冲(buffer)是在向硬盘写入数据时,先把数据放入缓冲区,然后再一起向硬盘写入,把分散的写操作集中进行,减少磁盘碎片和硬盘的反复寻道,从而提高系统性能。
简单来说,缓存(cache)是用来加速数据从硬盘中"读取"的,而缓冲(buffer)是用来加速数据"写入"硬盘的。
Linux服务器运行一段时间后,由于其内存管理机制,会将暂时不用的内存转为buff/cache,这样在程序使用到这一部分数据时,能够很快的取出,从而提高系统的运行效率,所以这也正是linux内存管理中非常出色的一点,所以乍一看内存剩余的非常少,但是在程序真正需要内存空间时,linux会将缓存让出给程序使用,这样达到对内存的最充分利用,所以真正剩余的内存是free+buff/cache。
第五行为交换分区(swap虚拟内存)信息,如表所示:
内 容 说 明
Swap: 2097148 total 交换分区(虚拟内存)的总大小
Ok used 已经使用的交换分区的大小
2097148 free 空闲交换分区的大小
1481544 avail Mem 估计有多少内存可用于启动新程序,即系统可用内存
通常,交换分区(Swap)被频繁使用的情况,将被视作物理内存不足而造成的。
再来看 top 命令的第二部分输出,主要是系统进程信息。这部分和 ps 命令的输出比较类似,只是如果在终端执行 top 命令,则不能看到所有的进程,而只能看到占比靠前的进程。
?PID:进程的 ID。
?USER:该进程所属的用户。
?PR:优先级,数值越小优先级越高。
?NI:优先级,数值越小、优先级越高。
?VIRT:该进程使用的虚拟内存的大小,单位为 KB。
?RES:该进程使用的物理内存的大小,单位为 KB。
?SHR:共享内存大小,单位为 KB。
?S:进程状态。
?%CPU:该进程占用 CPU 的百分比。
?%MEM:该进程占用内存的百分比。
?TIME+:该进程共占用的 CPU 时间。
?COMMAND:进程的命令名。
显示多个 CPU 核心的详细信息
无论系统中有多少个 CPU 核心,默认的 CPU 信息总是输出一行,即所有核心加起来的综合数据。能不能查看各个 CPU 核心单独的数据呢?答案是,可以的。按键盘上的数字 1 就可以在不同的视图之间切换了:
显示进程执行的完整命令
默认 COMMAND 列只显示程序的名字,并不包含程序的路径。有时能够看到程序的完整路径是很方便的。你可以通过小写字母 c 来切换 COMMAND 列的显示模式:
不仅是程序的完整路径,连启动程序的参数都显示出来了!
3、pgrep命令,查询进程信息
当使用ps命令查询某个进程的PID信息时,往往需要结合grep命令对输出结果进行过滤,这样使用非常不方便,而pgrep命令正是查询特定进程信息的专用工具。使用pgrep命令可以根据进程的名称、运行该进程的用户、进程所在的终端等多种属性查询特定进程的PID号。
用法:
#pgrep [选项] [程序名]
-l:输出对应的进程号
-U: 查询特定用户的进程
#pgrep-l “log”
#pgrep -l -U 指定用户名
4、pstree命令,查看进程树
pstree命令以树状图的方式展现进程之间的派生关系,显示效果比较直观。
注:最小化安装centos之后,使用pstree显示进程树,提示没有此命令。需要安装psmisc包
#pstree -aup -aup:查看个进程对应的PID号,用户名,完成命令等信息
也可以查看指定用户的进程树
#pstree -ap user1
二、控制进程
1、启动进程
在linux系统中,可以由用户手工启动或者按预定计划调度启动新的进程
1)手动启动进程
由用户手工输入命令或者可执行程序的路径,可以至少启动一个进程,根据进程是否需要占用当前的命令终端,手工启动又可以分为前台启动和后台启动。
在前台运行的进程,用户必须等到该进程执行结束并退出以后,才能输入其他命令
后台运行的进程,用户可以在终端中输入其它命令,而无须等待后台进程结束,后台进程需要使用“&”操作符,将此符号放在要执行的命令的后面,进程启动后会直接放入后台运行
2)调度启动进程
通过at或cron计划任务调度,在指定的日期和时间启动进程,稍后会详细介绍
2、改变进程的运行方式
1)挂起当前进程
当linux操作系统中的命令正在前台执行时(运行尚未结束),按ctrl+z组合键可以将当前进程挂起(调入后台并停止执行)。
2)查看后台的进程
需要查看当前终端中在后台运行的进程任务时,可以使用jobs命令,结合-l选项可以同时显示进程对应的pid号。
3)将后台的进程恢复运行
使用bg命令,可以将后台中暂停执行(如ctrl+z组合键挂起)的任务恢复执行。继续在后台执行操作。而使用fg命令,可以将后台任务重新恢复到前台执行。指定后台任务进程的任务编号作为参数
3、终止进程执行
当用户在前台执行某个进程时,可以按ctrl+c组合键强制进行中断,中断前台进程的运行后,系统将返回命令行提示符等待用户输入新的命令,当按ctrl+c组合键无法终止程序或者需要结束在其他中断或后台运行的进程时,可以使用专用的进程终止命令kill、killall、pkill。
1)使用kill命令终止进程,kill后面只能跟进程号
对于无法正常终止的系统进程,在必要时可以结合“-9”选项强制终止
2)使用killall命令终止进程
通过进程名称来终止进程,当需要结束系统中多个相同名称的进程时使用killall命令更加方便,效率更高,-9选项,可以将相同名称的进程强行终止
3)使用pkill命令终止进程,根据进程的名称、运行该进程的用户、进程所在的终端等多种属性终止特定的进程,
-U 指定用户
4、计划任务管理
在linux操作系统中,除了用户即使执行的命令操作以外,还可以配置在指定的时间,指定的日期执行预先计划的系统管理任务(如定期备份,定期采集监测数据),在centos中默认已经安装了at、cronie软件包,通过atq和crond这两个系统服务实现一次性、周期性计划任务的功能,并分别通过at、crontab命令进行计划任务设置
1)at一次性任务设置
使用at命令设置的计划任务只在指定的时间执行一次,前提是对应的系统服务atd必须已经运行,需要注意的是,计划任务执行的时间、日期必须安排在当前系统的时刻之后,否则将无法正确设置计划任务
在执行一次性任务时,在at命令中一次指定计划任务的执行时间、日期作为参数(若只指定时间则表示当天的该时间,若只指定日期则表示该日期的当前日期 ),确认后将进入带“at>”提示符任务编辑界面,每行可以设置一条执行命令,可以依次设置多条语句,最后按Ctrl+D提交任务,所设置的任务将依次按照计划时间执行,对于已经设置的计划任务通过“atq”命令进行查询
?使用at命令创建任务,例如:在当天的20:00关闭系统
?使用atq命令查询还未执行的计划任务
?使用“atrm”命令删除指定编号的at任务,atrm[编号]
2)crontab周期性任务设置
crontab命令设置的计划任务可以按照预设的周期重复执行,启用周期性任务也有一个前提条件,即对应的系统服务crond必须已经运行,默认系统已安装,如果没安装,先安装cronie包,通过 rpm-qcronie查询包是否安装
表示已安装
?crontab的配置文件和目录
crond通过多个目录和文件设置计划任务 ,不同类型的任务由不同的配置文件来设置
/etc/crontab—系统任务配置文件
a)/etc/crontab文件中设置的是维护linux操作系统所需的任务,Linux操作系统及相关
程序在安装时可自动设置,不建议用户手动修改此文件
例如,改文件中包括设置shell环境,可执行路径等变量的操作,以及每小时、每天、每周、每月需要执行的任务目录
#cat/etc/crontab
根据文件中的设置,crond将按照不同的周期重复执行相应目录中的任务脚本文件
b)/var/spool/cron/—用户cron任务的配置文件存放目录
由用户自己设定(使用crontab命令)的cron计划任务将被保存到目录/var/spool/cron/中,文件名与用户名相同。
#ls -l /var/spool/cron/*
c)使用crontab命令管理用户的计划任务
设置周期性计划任务列表主要通过crontab命令进行,结合不同选项可以完成不同的计划管理操作
-e:编辑计划任务列表
-u:指定所管理的计划任务属于哪个用户,默认是针对当前用户,一般只有root用户有权限使用此选项(用户编辑、删除其他用户的计划任务)
-l:列表显示计划任务
-r:删除计划任务列表
同时还可以和特殊字符一起使用:
?星号():代表所有可能的值,例如月份字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。
?逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,3”,表示1和3
?中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”
?正斜线(/):可以用正斜线指定时间的间隔频率,同时正斜线可以和星号一起使用,例如/10,表示每十分钟执行一次。
实例:每天下午17:30分关闭firewalld防火墙,可以根据自己时间来设定
每隔3天删除/media目录中后缀名为“*.txt”文件,从当日开始算
每周日晚上的22:00将/etc/passswd文件复制到/mnt目录中
#crontab-e
如果crond服务没有启动,需要启动,默认crond服务已启动
#systemctlstatuscrond //查看crond服务状态,表示已启动
如果没有启动crond服务
#systemctlstart crond
查看用户的计划任务列表
#crontal -l
查看某个用户的计划任务
先切换到jerry用户创建如下的计划任务,再返回root用户下查看
#crontab -l -u jerry
删除用户的计划任务
在root用户中删除jerry用户所创建的计划任务
#crontab -r -u jerry
直接输入crontab-r是删除当前用户的计划任务
内容总结
以上是互联网集市为您收集整理的进程和计划任务管理全部内容,希望文章能够帮你解决进程和计划任务管理所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。