首页 > 系统服务 > 详细

linux下的进程管理

时间:2016-03-28 00:36:18      阅读:271      评论:0      收藏:0      [点我收藏+]

什么是进程?


在了解进程之前我们先了解程序:

       程序:programe,通常为二进制程序,放置在存储介质中,以物理文件的形式存在

       进程:程序被触发后,执行者的权限与属性、程序的程序代码与所需数据等都会被加载到内存当中,操作系统给与这个内存内的一个单元一个标识符(PID),即进程号。所以说,进程就是一个正在运行的程序。对于系统而言,用PID来表示一个进程,而我们对于进程的管理也通过PID来进行。

       进程的类型:对于系统而言,每个进程都有生命周期,有的进程伴随开机,一直运行,有的进程运行过后,立刻结束,所以又分为:

       守护进程:与终端无关,在系统引导中启动的进程

       前台进程:批处理进程,用户通过终端启动的进程

             注意:也可把在前台启动的进程送往后台,以守护模式运行;

父进程与子进程:当我们执行一个程序(程序1)以后,分配到一个PID,再用这个程序去调用另外一个程序(程序2),又产生另外一个PID,这个PID就是子进程,程序1就是父进程,可以通过PPID进行判断。用ps -l查看进程的相关信息:

技术分享

进程的运行状态(stat):对于linux中的程序而言,有以下几种运行态

       运行态:running

       就绪态:ready

       休眠态:1.可中断休眠:interruptable

                      2.不可中断:uninterruptable

       停止态:暂停于内存中,但不会被调度,除非手动启动

       僵死态:zombie 

       进程的优先级(prority):在系统中,程序运行都要占用cpu,虽然现在的cpu运算速率非常高,但是各程序之间也有优先级之分,级别高的,在同等条件下,优先执行,比如系统进程。所以linux系统划分了139个优先级:

        0-139:1-99:实时优先级,由系统创建,不可调整

        100-139:静态优先级,数值越小,优先级越高,我们又用nice值表示这39个优先级

                        nice值:-20-19,对应100-139

                可以通过调整nice值,调整进程优先级


以下介绍一些linux进程管理与查看工具:pstree,ps,htop,glances,vmstat,dstat,kill,nice


1.pstree:进程树查看工具,查看各个进程之间的联系

           pstree:查看进程树

           pstree -Ap:同时查看每个进程的PID

           pstree -Au:同时列出每个进程的所属帐号名称 

技术分享

2.ps:强大的进程查看工具,将当前的进程运行状态显示出来,

           注意:ps显示的进程是静态的

        选项:

            a:显示所有与终端相关的进程

            x:所有与终端无关的进程

            u:以用户为中心组织状态信息显示

            常用:ps aux

技术分享技术分享

            显示的信息的含义:

            VSZ:该进程用到的虚拟内存量(KB)

            RSS:该进程用到的固定内存量(KB)

            STAT:

                R:running,运行中

                S:interruptable sleeping,可唤醒休眠态

                D:uninterruptable sleeping,不可唤醒休眠态

                T:Stopped:停止态

                Z:zombie;僵死态

                +:前台进程

                l:多线程进程

                N:低优先级进程

                <:高优先级进程

                s:session leader 

            TYY:登录者的终端机位置,若使用远程登录则为动态终端接口(pts/#)

            START:该进程被触发启动的时间

            TIME:使用掉的CPU时间,注意:是此进程实际花费CPU运行的时间,而不是系统时间

            command:该进程的实际命令

            -e:显示所有的进程

            -f:显示完整格式的进程信息

            常用组合:ps -ef,与ps aux显示的信息类似

技术分享

            -F:显示完整格式的进程信息

                C:CPU使用率

                PSR:运行于哪颗CPU之上

            -H:以层级结构显示进程的相关信息

            常用组合:ps -eFH

技术分享

通过ps命令可以查看到很多的程序信息,当然还可以自定义信息的显示。

           常用组合:-eo,-axo

           ps -o  field1, field2,...:自定义要显示的字段列表,以逗号分隔;

          常用的field:pid, ni, pri, psr, pcpu, stat, comm, tty, ppid, rtprio

内容过多,也可以使用grep进行筛选。


3.htop命令:强大的动态进程查看,进程管理工具,可以动态查看进程的运行状态,查看几乎ps命令里面的所有内容,而且还可以进行管理,比如实时调整进程的优先级,实时追踪进程的系统调用,标记进程,实时追踪等等。不过这个程序一般系统没有自带,系统自带的一般是top命令,htop是top的升级版本,更加强大,我们可以进行用yum进行安装。

            -d #:指定延迟时间间隔

            -d username:只显示指定用户的进程

            -s colume:以指定字段进行排序

            子命令:

                l:显示选定的进程打开的文件列表;

                s:跟踪选定的进程的系统调用;

                t:以层级关系显示各进程状态;

                a:将选定的进程绑定至某指定的CPU核心,使用空格键进行加减操作

                [space]:空格键,标记进程

技术分享


4.vmstat:显示系统资源变化 ,可以检测CPU/内存/磁盘输入输出状态

        常用选项:

               -f:开机到目前为止系统复制(fork)的进程数

               -s:将一些事件(开机至目前为止)导致的内存变化情况列表说明

               -d:列出磁盘的读写总量统计表

               -p [分区名]:显示磁盘资源相关,例:vmstat -p /dev/sda2

技术分享

        显示的信息的含义:

            procs:

                   r:等待运行的进程的个数,cpu上等待运行的任务的队列长度

                   b:处于不可终端睡眠状态的进程个数,被阻塞的任务队列的长度

                   这两个越多,代表系统越忙碌

            memory:

                   swpd:虚拟内存被使用的容量

                   free:空闲的内存总量

                   buffer:用于缓冲存储器的内存

                   cache:用于高速缓存的内存

            swap:

                   si:数据进入swap中的数据速率(kb/s)

                   so: 数据离开swap的速率(kb/s)

       如果si/so的数值太大,表示内存内的数据经常要在磁盘与内存之间传输,系统性能会很差

            io:   

                   bi:从块设备读入数据到系统的速度(kb/s)

                   bo: 保存数据至块设备的速率(kb/s)

                   数值越大,代表;系统I/O越忙碌

            system:

                   in: interrupts,中断速率,表示每秒钟被中断的次数

                   cs:context switch,每秒钟进行的事件切换次数

        数值越大,代表系统与接口设备之间的通讯非常频繁,这些接口设备包括磁盘、网卡、时钟等

            cpu:  

                   us: user space,非内核层的CPU使用状态

                    sy:system,内核层所使用的CPU状态

                    id:idle,闲置的状态

                    wa:wait ,等待I/O所耗费的CPU状态

                    st: stolen,被虚拟机所盗用的CPU使用状态

vmstat -s:将一些事件(开机至目前为止)导致的内存变化情况列表说明

技术分享

vmstat -d:列出磁盘的读写总量统计表

技术分享


5.glances:强大的系统运行状态监视工具,不仅可以监控当前主机的运行状态,还可以远程监控其它主机的运行状态

        注意:这个程序大部分系统没有自带也要自己安装

        内建命令:

        a  自动排序                         

        c  根据CPU使用率排序                

        m  根据内存占用比排序               

        p  根据进程名字排序       

        d  显示/隐藏硬盘I/O状态             

        f  显示/隐藏文件系统状态           

        n  显示/隐藏network状态                              

        1  全局CPU或者每个CPU的状态

        q  Quit (Esc and Ctrl-C also work)

     技术分享

  glances -f /tmp -o HTML,把监听到的信息导出成html的文件保存下来          


6.dstat命令:“一招鲜,吃遍天”,显示实时的系统资源占用状况

            常用选项:

                -c:--cpu,显示cpu相关信息,还可以分别查看每个cpu的信息

                         -c #,#,.....,total

                -d:--disk,显示磁盘的相关信息

                         -D sda,sdb,。。。,total

                -g:显示page相关的速率数据

                -m:memory的相关统计数据

                -n:interface(接口,连接)的相关统计数据

                -p:显示process(进程)的相关数据

                -r:显示io请求的相关统计数据

                -s:显示swapped的相关统计数据

                --top-cpu;显示最占用CPU的进程

                --top-io:最占用io的进程

                --top-mem:最占用内存的进程

技术分享

7.kill:- terminate a process,用于向进程发送信号,以实现对进程的管理;

          

          显示当前进程可用信号:kill -l

          向进程发信号:kill [-s singal|-SINHAL] pid...

          常用信号:

         1.SIGHUP,无需关闭进程而让其重读配置文件

         2.SIGINT,终止正在运行的进程,相当于Ctrl+c

         9.SIGKILL,杀死运行中的进程

         15.SIGTERM,终止运行中的进程

         19.SIGSTOP,相当于Ctrl+z,来暂停一个进程

         每个信号的标识方法有三种:

                     1.信号的数字标识

                     2.信号的完整名称

                     3.信号的简写名称

         例:kill -9 8086

                kill -s 9 8086

                kill -SIGKILL 8086

         killall:终止相关的所有命令,防止再生成

                  killall -singal pid

                  killall -9 httpd

8.nice命令:以指定的nice值启动并运行相应命令

               # nice  [OPTION]  [COMMAND [ARGU]...]

                    选项: -n #

                注意:仅管理员可调低nice值;

        renice命令:已经存在的进程nice值调整

             renice [number] PID

             renice -5 19981


本文出自 “飞越之路” 博客,请务必保留此出处http://zpf461435.blog.51cto.com/11283159/1757235

linux下的进程管理

原文:http://zpf461435.blog.51cto.com/11283159/1757235

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!