前言:程序是保存在外部存储介质(如硬盘、光盘)中的可执行机器代码和数据的静态集合,而进程是在CPU及内存中处于动态执行状态的计算机程序。在linux系统中,每个程序启动后可以创建一个或多个进程。例如,提供Web服务的httpd程序,当有大量用户同时访问Web页面时,httpd程序可能会创建多个进程来提供服务。

查看进程

了解系统中进程的状态是对进程进行管理的前提,使用不同的命令工具可以从不同的角度查看进程状态

1.ps——查看静态的进程统计信息(processes statistic)

ps命令用于报告当前系统的进程状态。可以搭配kill指令随时中断、删除不必要的程序。ps命令是最基本同时也是非常强大的进程查看命令,使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等,总之大部分信息都是可以通过执行该命令得到的。

通过不同的命令选项,可以有选择性地查看进程信息。

-a:显示所有终端机下执行的程序,除了阶段作业领导者之外。
a:显示现行终端机下的所有程序,包括其他用户的程序。
-A:显示所有程序。
-c:显示CLS和PRI栏位。
c:列出程序时,显示每个程序真正的指令名称,而不包含路径,选项或常驻服务的标示。
-C<指令名称>:指定执行指令的名称,并列出该指令的程序的状况。
-d:显示所有程序,但不包括阶段作业领导者的程序。
-e:此选项的效果和指定"A"选项相同。
e:列出程序时,显示每个程序所使用的环境变量。
-f:显示UID,PPIP,C与STIME栏位。
f:用ASCII字符显示树状结构,表达程序间的相互关系。
-g<群组名称>:此选项的效果和指定"-G"选项相同,当亦能使用阶段作业领导者的名称来指定。
g:显示现行终端机下的所有程序,包括群组领导者的程序。
-G<群组识别码>:列出属于该群组的程序的状况,也可使用群组名称来指定。
h:不显示标题列。
-H:显示树状结构,表示程序间的相互关系。
-j或j:采用工作控制的格式显示程序状况。
-l或l:采用详细的格式来显示程序状况。
L:列出栏位的相关信息。
-m或m:显示所有的执行绪。
n:以数字来表示USER和WCHAN栏位。
-N:显示所有的程序,除了执行ps指令终端机下的程序之外。
-p<程序识别码>:指定程序识别码,并列出该程序的状况。
p<程序识别码>:此选项的效果和指定"-p"选项相同,只在列表格式方面稍有差异。
r:只列出现行终端机正在执行中的程序。
-s<阶段作业>:指定阶段作业的程序识别码,并列出隶属该阶段作业的程序的状况。
s:采用程序信号的格式显示程序状况。
S:列出程序时,包括已中断的子程序资料。
-t<终端机编号>:指定终端机编号,并列出属于该终端机的程序的状况。
t<终端机编号>:此选项的效果和指定"-t"选项相同,只在列表格式方面稍有差异。
-T:显示现行终端机下的所有程序。
-u<用户识别码>:此选项的效果和指定"-U"选项相同。
u:以用户为主的格式来显示程序状况。
-U<用户识别码>:列出属于该用户的程序的状况,也可使用用户名称来指定。
U<用户名称>:列出属于该用户的程序的状况。
v:采用虚拟内存的格式显示程序状况。
-V或V:显示版本信息。
-w或w:采用宽阔的格式来显示程序状况。 
x:显示所有程序,不以终端机来区分。
X:采用旧式的Linux i386登陆格式显示程序状况。
-y:配合选项"-l"使用时,不显示F(flag)栏位,并以RSS栏位取代ADDR栏位 。
-<程序识别码>:此选项的效果和指定"p"选项相同。
–cols<每列字符数>:设置每列的最大字符数。
–columns<每列字符数>:此选项的效果和指定"–cols"选项相同。
–cumulative:此选项的效果和指定"S"选项相同。
–deselect:此选项的效果和指定"-N"选项相同。
–forest:此选项的效果和指定"f"选项相同。
–headers:重复显示标题列。
–help:在线帮助。
–info:显示排错信息。
–lines<显示列数>:设置显示画面的列数。
–no-headers:此选项的效果和指定"h"选项相同,只在列表格式方面稍有差异。
–group<群组名称>:此选项的效果和指定"-G"选项相同。
–Group<群组识别码>:此选项的效果和指定"-G"选项相同。
–pid<程序识别码>:此选项的效果和指定"-p"选项相同。
–rows<显示列数>:此选项的效果和指定"–lines"选项相同。
–sid<阶段作业>:此选项的效果和指定"-s"选项相同。
–tty<终端机编号>:此选项的效果和指定"-t"选项相同。
–user<用户名称>:此选项的效果和指定"-U"选项相同。
–User<用户识别码>:此选项的效果和指定"-U"选项相同。
–version:此选项的效果和指定"-V"选项相同。
–widty<每列字符数>:此选项的效果和指定"-cols"选项相同。
以上列出的是ps命令中的选项,需要注意的是,有一部分选项是不带“-”前缀的。习惯上将上述选项组合在一起使用,如执行“ps aux”或“ps -elf”命令。

上述输出信息中,第1行为列表标题,其中各字段的含义描述如下:
USER 进程的属主;
PID 进程的ID;
%CPU 进程占用的CPU百分比;
%MEM 占用内存的百分比;
VSZ 进程使用的虚拟內存量(KB);
RSS 该进程占用的固定內存量(KB)(驻留中页的数量);
TTY 该进程在那個终端上運行(登陆者的终端位置),若与终端无关,则表示(?)。
若为pts/0等,则表示由网络连接主机进程
START 该进程被触发启动时间;
TIME 该进程实际使用CPU运行的时间;
COMMAND 命令的名称和参数;
STAT状态位常见的状态字符
D 无法中断的休眠状态(通常 IO 的进程);
R 正在运行可中在队列中可过行的;
S 处于休眠状态;
T 停止或被追踪;
W 进入内存交换 (从内核2.6开始无效);
X 死掉的进程 (基本很少見);
Z 僵尸进程;
< 优先级高的进程
N 优先级较低的进程
L 有些页被锁进内存;
s 进程的领导者(在它之下有子进程);

ps -elf命令与ps -aux命令大致相同,

其他代表的含义:
PPID:父进程。
NI:内核态(NICE值,为-20~19,值越小,占用资源优先级值越高)。
ADDR:为“-”是代表正在运行。
SZ:占用swap交换分区的值。
WCHHN:内核名称。

由于系统中运行的进程数量较多,需要查询某一个进程的信息时可以结合管道操作和grep命令进行过滤。例如,过滤包含“bash”的进程信息。

2.top——查看进程动态信息

top命令可以实时动态地查看系统的整体运行情况,是一个综合了多方信息监测系统性能和运行信息的实用工具。通过top命令所提供的互动式界面,用热键可以管理。
可跟选项:
-b:以批处理模式操作;
-c:显示完整的治命令;
-d:屏幕刷新间隔时间;
-I:忽略失效过程;
-s:保密模式;
-S:累积模式;
-i<时间>:设置间隔时间;
-u<用户名>:指定用户名;
-p<进程号>:指定进程;
-n<次数>:循环显示的次数。

上述输出信息中,开头的部分显示了系统(Tasks)、CPU占用、内存占用(Mem)、交换空间(Swap)等汇总信息;汇总信息下方依次显示当前进程的排名情况。相关信息的含义表述如下:

系统任务(Task)信息:total,总进程数;running,正在运行的进程数;sleeping,休眠的进程数;stopped,中止的进程数;zombie,僵死无响应的进程数。
cpu占用信息:us,用户占用;sy,内核占用;ni,优先级调度占用;id,空闲CPU;wa,I/O等待占用;hi,硬件中断占用;si,软件中断占用;st,虚拟化占用。要了解空闲的CPU百分比,主要是看%id部分。
内存占用(Mem)信息:total,总内存空间;used,已用内存;free,空闲内存;buffers,缓冲区域。
交换空间(Swap)占用:total,总交换空间;used,已用内存;free,空闲内存;buffers,缓冲区域。

3.pgrep——查询进程信息

pgrep命令以名称为依据从运行进程队列中查找进程,并显示查找到的进程id。每一个进程ID以一个十进制数表示,通过一个分割字符串和下一个ID分开,默认的分割字符串是一个新行。对于每个属性选项,用户可以在命令行上指定一个以逗号分割的可能值的集合。

可跟选项:

-o:仅显示找到的最小(起始)进程号;
-n:仅显示找到的最大(结束)进程号;
-l:显示进程名称;
-P:指定父进程号;
-g:指定进程组;
-t:指定开启进程的终端;
-u:指定进程的有效用户ID。
例如,查询进程名中包含“log”的进程及其PID号:

例如,查询用户root在tty1终端上运行的进程及PID号:

4.pstree——查看进程树

pstree命令以树状图的方式展现进程之间的派生关系,显示效果比较直观。

可跟选项:

-a:显示每个程序的完整指令,包含路径,参数或是常驻服务的标示;
-c:不使用精简标示法;
-G:使用VT100终端机的列绘图字符;
-h:列出树状图时,特别标明现在执行的程序;
-H<程序识别码>:此参数的效果和指定"-h"参数类似,但特别标明指定的程序;
-l:采用长列格式显示树状图;
-n:用程序识别码排序。预设是以程序名称来排序;
-p:显示程序识别码;
-u:显示用户名称;
-U:使用UTF-8列绘图字符;
-V:显示版本信息。
例如,查看当前系统的进程树,包括各进程对应的PID号、用户名、完整命令等信息。

。。。。。//省略部分信息。

进程的启动方式

手工启动

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

调度启动

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

进程的前后台调度

ctrl+Z组合键:将当前进程挂起,即调入后台并停止执行
jobs命令:查看处于后台的任务列表
fg命令:将后台进程恢复到前台运行,可指定任务序号

ctrl+c 组合键:中断正在执行的命令

kill、killall——终止进程

kill命令用来删除执行中的程序或工作。kill可将指定的信息送至程序。预设的信息为SIGTERM(15),可将指定程序终止。若仍无法终止该程序,可使用SIGKILL(9)信息尝试强制删除程序。程序或工作的编号可利用ps指令或job指令查看。
killall命令使用进程的名称来杀死进程,使用此指令可以杀死一组同名进程。我们可以使用kill命令杀死指定进程PID的进程,如果要找到我们需要杀死的进程,我们还需要在之前使用ps等命令再配合grep来查找进程,而killall把这两个过程合二为一,是一个很好用的命令。

-9选项用于强制终止

pkill——终止进程

根据特定条件终止相应的进程
常用命令选项:
-U:根据进程所属的用户名终止相应进程
-t:根据进程所在的终端终止相应进程
例如,创建csdn用户后,终止由用户csdn启动的进程。


计划任务管理

at——一次性计划任务

at命令用于在指定时间执行命令。at允许使用一套相当复杂的指定时间的方法。它能够接受在当天的hh:mm(小时:分钟)式的时间指定。假如该时间已过去,那么就放在第二天执行。当然也能够使用midnight(深夜),noon(中午),teatime(饮茶时间,一般是下午4点)等比较模糊的 词语来指定时间。用户还能够采用12小时计时制,即在时间后面加上AM(上午)或PM(下午)来说明是上午还是下午。 也能够指定命令执行的具体日期,指定格式为month day(月 日)或mm/dd/yy(月/日/年)或dd.mm.yy(日.月.年)。指定的日期必须跟在指定时间的后面。

上面介绍的都是绝对计时法,其实还能够使用相对计时法,这对于安排不久就要执行的命令是很有好处的。指定格式为:now + count time-units,now就是当前时间,time-units是时间单位,这里能够是minutes(分钟)、hours(小时)、days(天)、weeks(星期)。count是时间的数量,究竟是几天,还是几小时,等等。 更有一种计时方法就是直接使用today(今天)、tomorrow(明天)来指定完成命令的时间。
设置一次性计划任务的三部曲:1.设置时间,2.输入命令,3.按ctrl+c组合键提交任务。
例如,以下操作先通过date命令确认当前的系统时间,并设置在2019年11月14日的5:20分自动执行以下任务:统计该时间点系统中由root用户运行的进程的数量,并将该数值保存到“ /tmp/ps.root”文件中。

以下操作将设置一条计划任务,在当天的21:30时自动关闭当前系统。对于已经设置但还未执行(未到时间点)的计划任务,可以通过atq命令进行查询。但已执行过的at任务将不会再出现在列表中。

若要删除指定编号的at任务,可以使用atrm命令。删除后的at任务将不会被执行,并且不会显示在atq命令的显示结果中。但已经执行过的任务无法删除。
例如,删除第二条at计划任务。

crontab周期性任务设置

crontab命令被用来提交和管理用户的需要周期性执行的任务,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。

crontab命令:

按照预先设置的时间周期(分钟、小时、天,月,星期)重复执行用户指定的命令操作
属于周期性计划任务
主要文件设置:
全局配置文件,位于文件: /etc/crontab
系统默认的设置,位于目录 /etc/cron.*/
用户定义的设置,位于文件: /var/spllo/cron/用户名

使用crontab命令管理用户的计划任务

设置用户的周期性计划任务列表主要通过crontab命令进行,结合不同的选项可以完成不同的计划任务管理操作。常用的选项如下。
-e:编辑计划任务列表。
-u:指定所管理的计划任务属于哪个用户,默认时针对当前用户(自己),一般只有root用户有权限使用此选项(用于编辑、删除其他用户的计划任务)。
-l:列表显示计划任务。
-r:删除计划任务列表。
下面将分别讲解crontab命令相关选项的使用。
(1)编辑用户的计划任务列表
执行“crontab -e”命令后,将打开计划任务编辑界面(与vi中的操作相同)。通过该界面用户可以自行添加具体的任务配置,每行代表一个纪录,配置的格式与/etc/crontab文件中的主体部分类似,

每一行任务配置任务,都包括六个数据字段,分别表示不同的含义,每个字段必须定义。

由于各字段的作用不同,其取值范围也不一样,当使用“”时表示取值范围中的任意时间。crontab任务配置纪录中所设置的命令操作将在“分钟”+“小时”+“日期”+“月份”+“星期”都满足的条件下执行。

除了 “
*”以外,还可以使用减号“-”、逗号“,”、斜杠“/”与数字构成表达式来表示较复杂的时间关系。
减号“-”:可以表示一个连续的时间范围,如“1-4”表示整数1、2、3、4。
逗号“,”:可以表示一个间隔的不连续范围,如“3,4,6,8”。
斜杠符号“/”:可以用来指定间隔频率,如在日期字段中的“
/3”表示每隔3天。
例如,给用户csdn设置一条计划任务:在每周日的13.14分将/etc/passwd 文件的内容复制到宿主目录中,保存为csdn.txt。

当只需要删除某一条计划任务时,可以通过“crontab -e”进行编辑;而若要清空某个用户的所有计划任务,可以执行“crongtab -r”命令。

定时任务注意事项

定时任务(一般是脚本任务)规则的结尾最好加上“>/dev/null 2>&1”等内容,其中,“>”表示重定向,“dev/null”为特殊的字符设备文件,表示黑洞设备或空设备。“2>&1”表示让标准错误输出和标准输出一样,本命令内容即把脚本的正常和错误输出都重定向到/dev/null,即不纪录任何输出。
如果定时任务规则结尾不加“>/dev/null 2>&1”等命令配置,有可能有大量输出信息,时间长了,会产生大量文件占用大量磁盘inode节点(每个文件占用一个inode),以至于磁盘inode满而无法写入正常数据。

run.parts工具

软件包crontabs除了提供系统默认设置的计划任务的目录外,还提供名为run.parts的工具,该工具可以执行指定目录中的所有可执行文件,所以系统会使用run.parts工具调用执行位于 /etc/cron.*/中的脚本文件。例如,默认配置文件/etc/cron.d/0hourly中的配置信息。

anacron程序

anacron 是用来做什么的呢?设想这样一个场景,Linux 服务器会在周末关机两天,但是设定的定时任务大多在周日早上进行,但在这个时间点,服务器又处于关机状态,导致系统很多定时任务无法运行。

又比如,我们需要在凌晨 5 点 05 分执行系统的日志备份,但 Linux 服务器不是 24 小时开机的,在晚上需要关机,白天上班之后才会再次开机,在这个定时任务的执行时间我们的服务器刚好没有开机,那么这个定时任务就不会执行了。anacron 就是用来解决这个问题的。

anacron 会以 1 天、1周(7天)、一个月作为检测周期,判断是否有定时任务在关机之后没有执行。如果有这样的任务,那么 anacron 会在特定的时间重新执行这些定时任务。

那么,anacron 是如何判断这些定时任务已经超过执行时间的呢?这就需要借助 anacron 读取的时间记录文件。anacron 会分析现在的时间与时间记录文件所记载的上次执行 anacron 的时间,将两者进行比较,如果两个时间的差值超过 anacron 的指定时间差值(一般是 1 天、7 天和一个月),就说明有定时任务没有执行,这时 anacron 会介入并执行这个漏掉的定时任务,从而保证在关机时没有执行的定时任务不会被漏掉。
我们用 cron.daily 工作来说明一下 /etc/anacrontab 的执行过程:
1.读取 /var/spool/anacron/cron.daily 文件中 anacron 上一次执行的时间。
2.和当前时间比较,如果两个时间的差值超过 1 天,就执行 cron.daily 工作。
3.只能在 03:00-22:00 执行这个工作。
4.执行工作时强制延迟时间为 5 分钟,再随机延迟 0~45 分钟。
5.使用 nice 命令指定默认优先级,使用 run-parts 脚本执行 /etc/cron.daily 目录中所有的可执行文件。

总结:通过学习进程和计划任务管理,让我们学会查看和控制进程以及掌握crontab计划任务管理。

进程和计划任务管理|linux相关推荐

  1. Linux/Centos7系统管理之进程与计划任务管理

    Linux/Centos7系统管理之进程与计划任务管理查看进程--静态和动态查看控制进程--条件和全部at 一次性任务设置crontab 周期性任务设置一.程序和进程的关系(1)概念程序:保存在硬盘. ...

  2. 【AWSL】之Linux进程和计划任务管理(ps、top、pgrep、pstree、pkill、at、crontab)

    序言 这里我主要介绍Linux进程与计划任务 进程与计划任务 序言 一 .查看进程 1.程序和进程的关系 2.查看进程信息ps及top.pgrep.pstree ①ps命令 ②.top命令 ③.pgr ...

  3. Linux进程和计划任务管理(详细图例)

    Linux进程和计划任务管理 一.进程和进程的关系 二.查看进程信息--ps 2.1 方法一:ps aux 2.2 方法二:ps -elf 三.查看进程信息--top 3.1 top命令 3.2 to ...

  4. 搞它!!!Linux系统中查看进程和计划任务管理

    文章目录 首先我们了解一下程序和进程的关系: 一.查看进程 1.查看静态的进程统计信息(ps) 2.查看静态的进程统计信息(top) 3.pgrep命令(查询进程信息) 4.pstree命令(查看进程 ...

  5. linux进程与计划任务管理

    进程与计划任务管理 程序和进程的关系 程序 保存在硬盘.光盘等介质的可执行代码和数据 静态保存的代码 进程 在cpu及内存中运行的程序代码 动态执行的代码 父.子进程(每个程序可以创建一个或多个进程) ...

  6. linux一号进程和二号进程,Linux系统管理10——进程和计划任务管理(示例代码)

    Linux系统管理10--进程和计划任务管理 一.程序和进程的关系 1.程序 ·保存在硬盘.光盘等介质中的可执行代码和数据 ·静态保存的代码 2.进程 ·在CPU及内存中运行的程序代码 ·动态执行的代 ...

  7. linux进程和计划任务管理!

    linux进程和计划任务管理 一.查看进程和控制进程 1.程序和进程的关系 (1)程序 (2)进程 1)进程的生命周期 2)进程的几个状态 2.查看进程命令ps ps -aux ps -ef top命 ...

  8. Linux系统中查看进程和计划任务管理

     各位小伙伴们大家好,本次给大家带来的是Linux操作系统中的进程和计划任务的管理,首先大家都知道程序是保存在外部存储介质(如硬盘.光盘)中的可执行机器代码和数据的静态集合,而进程是在CPU及内存中 ...

  9. linux删除任务进程命令bkill,​linux 进程和计划任务管理

    进程和计划任务管理 要求: 管理系统中的进程 启动系统中的portmap服务,然后使用kill命令终止它的运行. 步骤: 使用service命令启动portmap服务并确认运行状态,使用pgrep命令 ...

  10. 学习进程和计划任务管理

    目录 进程与线程 进程(Process) 线程(Thread) 线程和进程的区别是什么? 查看进程信息ps 查看进程信息top 查看进程信息pgrep 查看进程信息pstree 进程的启动方式 ■手工 ...

最新文章

  1. 阿里、拼多多P8面试分享!
  2. python流程控制-Python流程控制常用工具详解
  3. 功率谱密度相关方法MATLAB实现
  4. econtrol窗体设计器
  5. raft2020年更新_ECCV2020最佳论文解读之递归全对场变换(RAFT)光流计算模型
  6. 查看redis aof内存_Redis持久化问题定位与优化技巧
  7. 搞怪又可爱!一组emoji表情
  8. Css3旋转、位移、缩放、倾斜动画
  9. Python+tkinter生成自动跳转到网页的二维码
  10. python工资高还是java-未来Java、大数据、Python哪个前景更好,薪资更高?
  11. selenium自动化之元素高亮显示
  12. python安装requests库提示更新_解决已经安装requests,却依然提示No module named requests问题...
  13. Spring揭秘-笔记
  14. 代码整洁 vs 代码肮脏
  15. 【明解C语言】之函数详解《上篇》
  16. 使用按键精灵编写云顶之奕挂机脚本
  17. 走近分形与混沌(part5)--洛伦茨与吸引子
  18. emc re 整改 超标_CE认证EMC测试不合格,如何整改 ;
  19. 基于clamp.js封装vue指令,处理多行文本的溢出
  20. Android studio连接夜神模拟器(一)

热门文章

  1. 飞机大战的常见Bug
  2. 【SandQuant 量化投资】詹姆斯·托宾:风险条件下的流动性偏好行为
  3. Android跳转到手机自启动管理页面
  4. redis短信发送限制
  5. python和ruby对比
  6. 2018 新年快乐 万事如意
  7. AutoK3s v0.4.8 发布 与 Harvester 梦幻联动
  8. ps cs6如何破解
  9. unity 3D期末大作业-简单坦克射击游戏
  10. 2021.01.05【读书笔记】丨生物信息学与功能基因组学(第四章 局部比对搜索基本工具-BLAST 下)