Linux服务器进程监控和调整

进程的定义:一个进程是一个程序的一次执行的过程,程序是静态的,它是一些保存在磁盘上的可执行的代码和数据集合,进程是一个动态的概念。 一、 Linux进程概念     Linux 进程中最知名的属性就是它的进程号(Process Idenity NumberPID)和它的父进程号(parent process IDPPID)PIDPPID都是非零正整数。一个PID唯一地标识一个进程。一个进程创建新进程称为创建了子进程(child process)。相反地,创建子进程的进程称为父进程。     所有进程追溯其祖先最终都会落到进程号为1的进程身上,这个进程叫做init进程。是内核自举后 第一个启动的进程。init进程作用是扮演终结父进程的角色。因为init进程永远不会被终止,所以系统总是可以确信它的存在,并在必要的时候以它为参 照。如果某个进程在它衍生出来的全部子进程结束之前被终止,就会出现必须以init为参照的情况。此时那些失去了父进程的子进程就都会以init作为它们 的父进程。     Linux进程在运行中的三种状态:  执行(Running)状态:CPU正在执行,即进程正在占用CPUl  就绪(Waiting)状态:进程已经具备的执行的一切条件,正在等待分配CPU处理时间。l  停止(Stoped)状态:进程不能使用CPUl     理解Linux下进程的结构:     Linux中一个进程在内存里有三部份的数据,就是"数据段""堆栈段""代码段",基于I386兼容的中央处理器,都有上述三种段寄存器,以方便操作系统的运行。见图1

    代码段,是存放了程序代码的数据,假如机器中有数个进程运行相同的一个程序,那么它们就可以使用同一个代码段。而数据段则存放程序的全局变量,常数以及动 态数据分配的数据空间。堆栈段存放的就是子程序的返回地址、子程序的参数以及程序的局部变量。堆栈段包括进程控制块PCBProcess Control Block)中。PCB处于进程核心堆栈的底部,不需要额外分配空间。     Linux进程的种类 :     Linux操作系统包括三种不同类型的进程,每种进程都有自己的特点和属性。  交互进程--由一个shell启动的进程。交互进程既可以在前台运行,也可以在后台运行。l  批处理进程--这种进程和终端没有联系,是一个进程序列。l  监控进程(也称守护进程)--Linux系统启动时启动的进程,并在后台运行。l

二、linux服务器进程的监控     1.基本进程查看命令:ps     Linux系统提供了pstop等察看进程信息的系统调用,通过结合使用这些系统调用,我们可以清晰地了解进程的运行状态以及存活情况,从而采取相应的 措施,来确保Linux系统的性能。它们是目前在Linux下最常见的进程状况查看工具,是随 Linux版本发行的,安装好系统之后,用户就可以使用。 这里以ps命令为例,ps命令是最基本同时也是非常强大的进程查看命令。利用它可以确定有哪些进程正在运行及运行的状态、进程是否结束、进程有没有僵死、 哪些进程占用了过多的资源等。ps命令可以监控后台进程的工作情况,因为后台进程是不和屏幕键盘这些标准输入/输出设备进行通信的,如果需要检测其情况, 可以使用使用ps el命令。图2psel|more命令输出的例子。      2 ps el命令显示的进程信息     2第二行主要信息见表1 1 ps输出详解     2.查看linux进程树命令:pstree     pstree命令用ASCII字符显示树状结构,清晰地表达了程序间的相互关系。如果不指定程序识别码或用户名称,则会把系统启动时的第一个程序视为基 层,并显示之后的所有程序;若指定用户名称,便会以隶属该用户的第一个程序当作基层,然后显示该用户的所有程序。     主要参数:  -a:显示每个程序的完整指令,包含路径、参数或常驻服务的标志。—  -c:不使用精简标志。—  -G:使用VT100终端机的列绘图字符。—  -h:列出树状图时,特别标明现在执行的程序。—  -H—<程序识别码>:此参数的效果和指定“-h”参数类似,但特别标明指定的程序。  -l:采用长列格式显示树状图。—  -n:用程序识别码排序,默认是以程序名称来排序。—  -p:显示程序识别码。—  -u:显示用户名称。—  -U:使用UTF-8列绘图字符。—  -V:显示版本信息。—     在命令行输入“pstree -l”,如图3所示。 3 pstree命令输出     可以看到init是系统的第一个进程,所有子进程的父进程。init通过解析/etc/inittab并参照默认或设定的运行级运行/etc/rc.d中的脚本。每个脚本可以启动或终止一个诸如网络、邮件、新闻或Web的服务。

三、Linux 服务器的进程的管理     Linux管理进程最好方法就是使用命令行下的系统命令。     1、启动进程     键入需要运行的程序的程序名,执行一个程序,其实也就是启动了一个进程。在Linux系统中每个进程都具有一个进程号(PID),用于系统识别和调度进 程。启动一个进程有两个主要途径手工启动和调度启动,后者是事先进行设置,根据用户要求自行启动。由用户输入命令,直接启动一个进程便是手工启动进程。 但手工启动进程又可以分为很多种,根据启动的进程类型不同、性质不同,实际结果也不一样。     1 前台启动     是手工启动一个进程的最常用的方式。一般地,用户键入一个命令"df",这就已经启动了一个进程,而且是一个前台的进程。这时候系统其实已经处于一个多进 程状态。有许多运行在后台的、系统启动时就已经自动启动的进程正在悄悄运行着。有的用户在键入"df"命令以后赶紧使用"ps -x"查看,却没有看到df进程,也觉得很奇怪。其实这是因为df这个进程结束太快,使用ps查看时该进程已经执行结束了。如果启动一个比较耗时的进程, 例如在根命令下运行: find , 然后使用ps aux查看,就会看到一个find进程在里面。     2 后台启动     直接从后台手工启动一个进程用得比较少一些,除非是该进程甚为耗时,且用户也不急着需要结果的时候。假设用户要启动一个需要长时间运行的格式化文本文件的进程。为了不使整个shell在格式化过程中都处于"瘫痪"状态,从后台启动这个进程是明智的选择。     2、进程调度     当需要中断一个前台进程的时候,通常是使用Ctrl+c组合键;但是对于一个后台进程就不是一个组合键所能解决的了,这时就必须使用kill命令.该命令 可以终止后台进程.至于终止后台进程的原因很多,或许是该进程占用的CPU时间过多;或许是该进程已经挂死.这种情况是经常发生的。Kill命令的工作原 理是:向Linux系统的内核发送一个系统操作信号和某个程序的进程标识号,然后系统内核就可以对进程标识号指定的进程进行操作。     除了killLinux下面的进程涉及到的命令还有:at at命令在指定时刻执行指定的命令序列;croncron命令用来完成重复的工作;crontab命令:crontab命令用于安装、删除或者列出用 于驱动cron后台进程的任务表。psps命令主要查看系统中的进程;top命令:top命令和ps命令的基本作用是相同的,显示系统当前的进程和其他 状况;但是top是一个动态显示过程,即可以通过用户按键来不断刷新当前状态。nicenice命令是进程按用户指定的优先级运行。renice: renice命令用来改变正在运行进程的优先级。另外不同发行版本的Linux版本也提供了一些图形化的进程管理工具,笔者使用RHEL 5.0就包括, Ksysguard见图4     KsysguardKDE的系统监视、进程管理程序(Win 2003 Ctrl+Alt+Del出现的就是类似这种功能的界面),允许用户从多种角度监测系统的运作状况。它还被设计成具有网络功能,监测对象也可以是网络上 的其它主机。启动Ksysguard的方法使用快捷键Ctrl+Esc可以弹出系统卫士。或者在命令行输入:KsysGuardKysygride同样 可以终止进程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值