资讯详情

进程与任务计划管理

引言

进程状态

程序过程理论

线程工作原理

线程状态

Ps命令

load average 的含义

load average 数据

Pgrep命令查询过程

Pstree命令

Jobs命令

Kill命令

Crontab设置周期性任务


引言

什么是过程?让我们先了解一下过程的概念:我们知道操作系统的核心概念是过程。简单地说,这个过程操作系统中的程序,它是操作系统资源管理的最小单位。但这个过程是一个动态实体,它是程序的执行过程。流程与程序的区别在于:流程是动态的,流程是静态的,流程是运行中的流程,流程是硬盘上保存的一些可执行代码。

用windows来举例:

下面的meeting和播放组件都是爱奇艺客户端的子过程是由主过程创建的。主过程的作用是让他的子过程或分任务给子过程。主过程也可以称为保护过程。

这里有一个延伸,在日常生活中会发现这种情况

我在这份文件中写了一些字符,当我继续更改它,但不保存时,再次打开它:

它提示发现有交换文件,在编辑不保存的情况下,文件实际上是在内存中运行的,在磁盘中保存后,因为我只修改了它,但没有保存,所以他仍然以交换文件的形式存在,会出现上述提示字符,只需要一步解决:

输入d在此界面上删除交换文件或删除1.txt.swp文件效果也一样。

程序:二进制文件,静态/bin/data,/usr/sbin/sshd。可执行代码和数据保存在硬盘、光盘介质中。

过程:程序运行过程、动态、生命周期和运行状态。cpu以及内存中运行的程序代码和父子过程,每个过程可以创建一个或多个过程。

分为前台进程和后台进程

前台流程:用户可以操作

后台流程:后台运行流程,ps-aux,所有的命令都是后台过程。

静态检查过程命令:

Ps-aux

Tail -f/var/log/messages

Tail命令是动态查看一个过程。

线程背包包含在过程中,是过程中的实际操作单位,也是操作系统中独立运行的基本单位,也称为轻过程,一个过程可以并发多个线程,每个线程可以并行执行不同的任务,我们在任务管理器中看到的过程是由我们下载的应用程序生成的,当然,应用程序也可以包含多个过程,如下面的百度网络磁盘,运行四种就绪状态的后台过程,一下子就是他们的大致管理关系。

公司(程序)-部门(流程)-员工(线程)-

所以换句话说,我们打开应用程序后,在后台操作相应的过程,然后我们点击应用程序中的一个功能,负责二次功能的操作,这样我们就可以完成操作员的命令,节省资源利用率,增强cpu的吞吐率。

线程工作原理

假设:单核单线程cpu能否运行多个包含多线程的应用程序。

Cpu假设这个周期是1s,如果是十个任务,那线程,1s时间等于分割10份,这里有个概念称为cpu时间分片,如果其只能运行一个进程,它会对时间进行划分,假设五个任务,每个任务时间为0.2s,每0.2s将资源给一个任务,即虽然是单核单线程也可以运行五个任务或更多。

1.建(NEW) :新创建了一个线程对象。

2.可行(RUNABLE):线程对象创建后,其他线程(比如main线程)调用了该对象的st.art()方法。该状态的线程位于可运行线程池中,等待被线程调度选中,获取cpu的使用权。

3.运行(RUNNING):可运行状态(runnable)的线程获得了cpu时间片(timeslice),执行程序代码。

4.阻塞(BLOCKED):阻塞状态是指线程因为某种原因放弃了cpu使用权,也即让出了cpu timeslice,暂时停止运行。直到线程进入可运行(runnable)状态,才有机会再次获得cpu timeslice转到运行(running)状态。

阻塞的情况分三利:

(一),等待阻塞:运行(running)的线程执行o.wait()方法,JVw会把该线程放入等待队列(waitting queue)中.

(二),同步阻塞:运行(runing)的线程在获取对象的同步时,若该同步锁被别的线程占用,则JvM会把该线程放入锁池(Lockpool)中。

(三),其他阻塞:运行(running)的线程执行Thread.sleep(long

ms)或t.join()方法,或者发出了I/o求时,jvm会把该线程置为阻塞状态。当sleep()状态超时、join()等待线程终止或者超时或者T/o处理完毕时,线程重新转入可运行(runnable)状态。

5.死亡(DEAD):线程run () 、 main ()方法执行结束,或者因异常退出了run ()方法,则该线程结束生命周期。死亡的线程不可再次复生

五种状态

新建à可运行à运行à阻塞à死亡

首先线程状态为创建,创建线程1,线程2这时候的线程是无法运行的,为了能让线程运行即为可运行状态,这时候线程1线程2放进线程池中即等待被调用,此处来了三个任务,这时候cpu会去线程池中拿去线程资源以此类推。

"协程”:利用了线程等待的这个时间可以做别的事情(协程切换任务源很小,效率高)

”回调":一个任务,多条线程同时执行

Ps命令查看静态的进程统计信息

常用的参数:

-a:显示当前终端下的所有进程信息,包括其他用户的进程。与"x"选项结合时将显示系统中所有的进程信息。

-u:使用以用户为主的格式输出进程信息。

-x:显示当前用户在所有终湍下的进程信息。

  1. ps

每个任务都会有一个编号即为pid,它是系统识别任务的唯一途径

Tty:的含义为终端,即用户可以通过操作来影响系统的一个环境,其中pts/0的含义为终端的编号

Time:任务运行的时间

Cmd:哪个任务正在运行

  1. ps -aux    将以简单列表的形式显示出进程信息

USER:启动该进程的用户账号的名称。

PID:该进程在系统中的数字ID号,在当前系统中是唯一的。

CPU:CPU 占用的百分比。

MEM:内存占用的百分比。

VSZ:该进程使用的棍拟内存量(KB)。

RSS:该进程占用的物理内存量(KB) 。

TTY:表明该进程在哪个终端上运行。不是从终端启动的进程则显示为?。

STAT;该进程的状态

D:不可中断的休眠状态

R:正在运行状态

S:处于休眠状态,可被唤醒

t:停止状态,可能是在后台暂停或进程处于跟踪调试状态

z:僵尸进程,进程已经中止,但是部分程序还在内存当中)

僵尸进程:

进程在结束后会回收进程资源

子进程回收线程,主进程回收子进程,最后主进程会将资源返回给cpu这是正常过程

这时候如果使用kill命令后主进程会直接消失,那么就剩下子进程和线程,当系统在压力不大的时候系统会回收子进程和线程,但是当系统压力过大的话它会漏掉子进程与线程那么这两个将会称为僵尸进程,它会持续在内存中运行但实际上此进程是无效的即为僵尸进程。

       这时候还会存在一个孤儿进程,同样还是在系统压力过大的情况,当线程被子系统回收后,子进程想要被回收只能通过主进程,但是当系统繁忙或者各种不可抗力因素的情况下主进程跳过了回收子进程的过程,直接将主进程回收后将会只剩下一个子进程,这就是所谓的孤儿进程,同样是无效但是会在内存中持续运行。

平均负载是指单位时间内,系统处于可运行状态和不可中断状态的平均进程数。和 CPU 使用率并没有直接的关系

一般的进程需要消耗 CPU、内存、磁盘I/O、网络I/O等资源,在这种情况下,平均负载就不是单独指的CPU使用情况。即内存、磁盘、网络等因素也可以影响系统的平均负载值。不过影响最大的是 CPU 使用率、CPU 等待和磁盘I/O。

一个机器的负载情况通常是通过 CPU 核数来判断的。当平均负载比 CPU 核数还大的时候,系统已经出现了过载。

如在单核处理器中,平均负载值为 1 或者小于 1 的时候,系统处理进程会非常轻松,即负载很低。当达到 3 的时候,就会显得很忙,达到 5 或者 8 的时候就不能很好的处理进程了(其中 5 和 8 目前还是个争议的阈值,为了保守起见,建议选择低的)。

0.00-1.00 之间的数字表示此时路况非常良好,没有拥堵,车辆可以毫无阻碍地通过。

1.00 表示道路还算正常,但有可能会恶化并造成拥堵。此时系统已经没有多余的资源了,管理员需要进行优化。

1.00-*** 表示路况不太好了,如果到达2.00表示有桥上车辆一倍数目的车辆正在等待。这种情况你必须进行检查了。

下面几个命令都可以看到 load average

  1. # top

Load average:平均负载值,此三个数值为第一分钟,第三分钟和第五分钟的cpu平均负载值。

PID:进程编号

USER:进程的持有用户

PR:进程运行的优先级,值越小优先级越高,会越早获取CPU的执行权

NI:进程的nice值,表示进程可被执行的优先级的修正数值

VIRT:进程使用虚拟内存,单位kb

RES:常驻内存,单位kb

SHR:进程使用的共享内存,单位kb

S:进程运行状态。(S:休眠;D:不可中断睡眠;R:运行中;T:跟踪/停止;Z:假死中)

%CPU:进行运行时CPU的占用比

%MEM:进程使用的内存占用比

TIME+:进程占用的CPU总时长

COMMAND:进程名

  1. # uptime

  1. # w

常用的参数

-l选项可以同时输出对应的进程名以及pid

-u:选项查询特定用户的进程

-t:查询在特定终端运行的进程

Pgrep 命令使用

  1. pgrep -l “log”

  1. pgrep -l -u lnj -t system

输出进程名和pid且指定用户的运行的特定的进程

Pstree命令

默认情况下只显示各进程的名称

-p:选项使用时可以同时列出对应的PID号

-u:选项可以列出对应的用户名

-a:选项可以列出完整的命令信息.

Pstree命令使用:

Pstree -aup

可以直接明了的查询此系统中进程关系

它正常情况下是和grep命令搭配使用

Pstree -aup | grep sshd

查看某个指定的进程

查看处于系统后台的任务列表

-l:可以同时显示该进程对应pid号

Jobs命令运用

Tail -f /var/log/messages &命令是查看占用终端的前端进程&符号是将此命令调入后台运行,不会占用前端资源

Jobs -l因我刚刚将tail调入了后台

正常情况下使用kill就可以杀死后台进程

Kill 11463

将后台的进程恢复运行

使用bg命令,可以将后台中暂停执行的任务回复运行,继续在后台执行操作按快捷键ctrl=

使用fg命令,可以将后台任务重新恢复到前台运行

Jobs -l

Fg 1

Bg

终止进程命令

Kill -l

Kill加上如上的数字即可获得相应的功能

Pgrep和kill组合使用

Pgrep -l “sshd”

Kill 9477

使用killall命令终止进程

使用killall 命令可以通过进程名称来终止进程,当需要结束系统中多个相同名称的进程时,使用killall命令将更加方便,效率更高。killall 命令同样也有"-9"选项。例如,执行如下的"killall -9 vim"命令可将所有名为 vim的进程都强行终止

多编辑几个文件

Killall -9 vim

Jobs -l

使用pkill命令终止进程

使用pkill 命令可以根据进程的名称、运行该进程的用户、进程所在的终端等多种属性终止特定的进程,大部分选项与pgrep 命令基本类似,如"-U”(指定用户)、"-t”(指定终端)等选项,使用起来非常方便。例如,若要终止由用户lnjj启动的进程(包括登录shell) ,可以执行以下操作。

Pkill -9 -U “lnj”

直接将lnj用户杀掉了即无法使用因为他将包含在lnj用户中的ssh服务也杀了,所以xshell也无法使用了。

Date命令

查看当下时间

crond通过多个目录和文件设置计划任务,不同类型的任务由不同的配置文件来设置。(1 ) l etcl crontab——系统任务配置文件

/etc/crontab文件中设置的是维护Linux操作系统所需的任务,Linux

操作系统及相关程序在安装时可白动设置,不建议用户手动修改此文件。例如,该文件中包括设置 Shell环境、可执行路径等变量的操作,以及每小时、每天、每周、每月需要执行的任务目录。执行如下的"cat./etc/ crontab"命令可以查看/etc/crontab文件的具体内容

[ rootlocalhost ~]# cat letc/ crontab

SHELL=/ bin/ bash   //设置执行计划任务的shel1环境

PATH-/ sbin : / bin : / usr/ sbin : /usr/bin   //定义可执行命令及程序的路径

MA工LTO=root  //将任务输出信息发送到指定用户的邮箱

根据/etc/cront.ab 配置文件中的设定,crond将按照不同的周期重复执行相应目录中的任务脚本文件。

( 2 ) /var/spool/cron/—用户 cron任务的配置文件存放目录

由用户自行设置(使用crontab命令)的cron 计划任务将被保存到目录/var/spool/cron/中,文件名与用户名相同。例如,通过如下操作可以得知,root 用户的 cron

计划任务保存在配置文件/var/ spool/cron/root中。

Crontab任务配置的格式

分  取值为从0-59之间的任意数

时  取值为从0-23之间的任意数

日  取值为1-31之间的任意整数

月  取值为从1-12之间的任意整数

周 取值为0-7之间的任意整数,0或者7都可以代表星期日

Vim /etc/crontab查看系统配置文件

*表示该范围内的任意时间

,表示间隔的多个不连续时间点

-表示一个连续的时间范围

/指定间隔的时间频率

使用which命令查看绝对路径

应用举例

0 17 * * 1-5   周一到周五每天17:00

30 8 * * 1,3,5  每周一、三、五的8点30分

8-18/2 * * *   8点到18点之间每2小时

0 * */3 * *        每3天

案例:需要在每年的3月的星期二晚上10点每三分钟echo“123123” /opt/lnj/1.txt

*/3 22 * 3 2 echo“123123” /opt/lnj/1.txt

管理crontab计划任务

编辑计划任务crontab -e [-u用户名]

这里需要注意的是在使用命令时需要给到该命令的绝对路径。

查看计划任务crontab -l[-u用户名]

删除计划任务crontab -r [-u 用户名]

标签: 74aup2g126gf二极管74aup2g125gd二极管

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台