您的位置首页>企业动态>

简要剖析Linux系统的进程管理机制_LINUX_操作系统_脚本之家

导读大家好,我是极客范的本期栏目编辑小友,现在为大家讲解简要剖析Linux系统的进程管理机制_LINUX_操作系统_脚本之家问题。一、流程1的概念和

大家好,我是极客范的本期栏目编辑小友,现在为大家讲解简要剖析Linux系统的进程管理机制_LINUX_操作系统_脚本之家问题。

一、流程1的概念和分类。进程概念Linux是一个多用户、多任务的操作系统。多用户意味着多个用户可以同时使用同一个linux系统;多任务意味着在linux下可以同时执行多个任务。更具体地说,Linux采用分时管理的方法,将所有任务放在一个队列中,操作系统根据每个任务的优先级为每个任务分配合适的时隙。每个时隙都很短,让用户根本感觉不到有多个任务在运行,让所有任务一起共享系统资源。这就是多任务处理的概念。我上面说的是单CPU多任务操作系统的情况。在这种环境下,虽然系统可以运行多个任务,但在某个时间点,CPU只能执行一个进程。在多CPU多任务操作系统中,因为有多个CPU,所以在某个时间点可以有多个进程同时运行。进程的基本定义是在自己的虚拟地址空间中运行的独立程序。从操作系统的角度来看,系统上运行的一切都可以称为进程。需要注意的是,程序和流程的关系可以是多对多的关系!2.进程的分类根据进程和运行程序的功能,进程可以分为两类:l)系统进程:可以执行内存资源分配、进程切换等管理工作;而且这个进程的运行不受用户的干扰,即使是root用户也不能干扰系统进程的运行。2)用户进程:在内核外执行用户程序、应用程序或系统程序生成的进程,可以在用户的控制下运行或关闭。用户进程可以分为三类:交互进程、批处理进程和守护进程。3)交互进程:shell终端启动的进程,执行时需要与用户进行交互,可以在前台运行,也可以在后台运行。4)批处理:该进程是一个进程集合,负责依次启动其他进程。5)守护进程:守护进程是一个一直运行的进程。它通常在linux系统启动时启动,在系统关闭时终止。它们独立于控制终端,并定期执行某些任务或等待处理某些事件。例如,httpd进程总是在运行,等待用户访问它。还有经常使用的crond进程,类似于windows的调度任务,可以定期执行用户设置的某些任务。3.过程的性质(1)过程的几种状态

(2)进程之间的关系在linux系统中,进程ID(用PID表示)是区分不同进程的唯一标识符,其大小是有限的。最大ID为32768,UID和GID分别用于表示启动此过程的用户和用户组。所有进程都是进程号为1的初始化进程的后代。内核在系统启动的最后阶段启动初始化过程。因此,这个进程是linux下所有进程的父进程,父进程以PPID为代表。因此,如果init进程被终止,则意味着所有进程都被终止,然后系统终止重新启动或关闭示例:ps命令输出的httpd进程信息:

与父进程相比,有子进程。通常,每个进程必须有一个父进程。父进程和子进程之间的关系是管理和被管理。当父进程停止时,子进程消失,但子进程关闭,父进程不一定终止。如果父进程在子进程退出之前退出,所有子进程都将成为孤立进程。如果没有相应的处理机制,这些孤立进程将始终处于死状态,无法释放资源。此时,系统默认将init进程作为其父进程。

二、进程管理命令在linux下,有很多命令来监控和管理进程。下面,我们介绍如何用四个最常用的命令ps、top、pstree和lsof有效地监控和管理Linux下的各种进程。(1)使用ps命令监控系统进程ps是linux下最常用的进程监控命令,重点介绍如何使用ps命令监控和管理系统进程。示例:以下是apache进程的输出信息。

其中,UID是用户的ID号,PID是进程的ID号,PPID是父进程,STIME是进程的启动时间,TTY是进程所属的终端控制台,TIME是进程启动后累计的总CPU时间,CMD是正在执行的命令。根的PPID是1,这是初始化的标识。另一种指示方式是检查子进程和父进程之间的对应关系:

其中%CPU代表进程占用的CPU百分比,%MEM代表进程占用的内存百分比,VSZ代表进程的虚拟大小,RSS代表进程的实际内存(驻留集)大小(以页为单位)。STAT表示进程的状态,进程状态有很多种:R表示正在运行的进程,S表示休眠进程,Z表示死进程,N表示优先级较高的进程,S表示父进程,S表示后台进程。开始表示开始该过程的时间。在这个例子中,进程之间的关系用树形结构表示。可以清楚地看到,第一个进程是父进程,而其他进程都是子进程。同时,从这个输出中,我们还可以看到每个进程占用的CPU和内存的百分比,以及进程的状态等等。(2)使用pstree监控系统进程的pstree命令,以树形结构显示程序和进程之间的关系,格式如下:

复制代码如下:pstree [-acnpu] [PID/user]。具体选项可通过pstree - help查看。因为显示结果的树结构太长,所以不再映射。pstree清楚地显示了程序和流程之间的关系。如果没有指定进程的进程号或用户名,初始化进程将被用作根进程。显示系统的所有程序和过程信息。如果指定了用户或PID,则与该用户或PID对应的所有程序和进程都将以用户或PID作为根进程显示。(3)必须使用top命令监控系统的进程。

的工具,与ps命令相比,top命令动态、实时的显示进程状态,而ps只能显示进程某一时刻的信息,同时,top命令提供了一个交互界面,用户可以根据需要,人性化的定制自己的输出,更清楚的了解进程的实时状态。    下面是top的显示信息

通过动态信息可以看出一个进程从上次更新到现在占用cpu时间,占用物理内存(%MEM),从进程启动到现在占用cpu总时间(TIME+)等。通过了解这些信息,可以使系统管理员掌握每个进程对系统CPU、物理内存的使用状况。

      (4)利用lsof监控系统进程与程序lsof全名list opened files,也就是列举系统中已经被打开的文件,通过lsof,我们就可以根据文件找到对应的进程信息,也可以根据进程信息找到进程打开的文件。lsof指令功能强大,这里介绍“-c,-g,-p,-i”这四个最常用参数的使用。更详细的介绍请参看manlsof或者lsof --help。1) lsoffilename:显示使用filename文件的进程。2)lsof -c abc:显示abc进程现在打开的文件3)lsof -g gid:显示指定的进程组打开的文件情况,使用进程组ID即GID4)lsof -p PID:PID是进程号,通过进程号显示程序打开的所有文件及相关进程,例如,想知道init进程打开了哪些文件的话,可以执行“lsof-p  1”命令5)lsof-i :通过监听指定的协议、端口、主机等信息,显示符合条件的进程信息。例如: 显示系统中tcp协议对应的25端口进程信息: 

复制代码代码如下:[root@localhost ~]# lsof-i tcp:25

显示系统中80端口对应的进程信息: 

复制代码代码如下:[root@localhost ~]# lsof-i :80

 (5) 计划任务计划任务就是提前设定的一系列命名,来在特定时间里自动完成,比如一些自动备份,自动关系,自动发邮件,广播之类计划任务有三个比较重要的命令1)at安排作业在某一时刻执行一次2)Batch安排作业在系统负载不重时执行一次3)Cron安排周期性运行的作业(6)结束进程Kill -1重启进程kill 进程号   结束进程kill -9强制结束进程(7) 设置程序的优先级Niec :指定程序运行优先级别 

复制代码代码如下:Nice -n command

     Renice:改变一个正在运行的进程的优先级别 

复制代码代码如下:Renice -n pid

优先级取值范围为(-20,19)(8)进程的挂起和恢复:挂起:Ctrl+Z终止:Ctrl+C进程的恢复:恢复到前台继续运行:fg恢复到后台继续运行:bg查看被挂起的进程:jobs

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。