漫漫运维路——进程基本概念及管理相关工具介绍

进程的概念

    进程是系统进行资源分配的基本单位,当一个应用程序启动时就向内核发起请求,然后由进程创建出新的进程,此时应用程序就启动了。创建进程的进程此时被称作父进程,而被创建出来的进程被称为子进程,此外子进程不可脱离父进程而存在,当一个父进程被销毁时,其子进程也会一并被销毁。

    在Linux中,进程被内核所管理,内核为每一个进程虚拟处一块内存空间,所以当进程被调度到内存中执行时,只能看到自己和内核,从而避免进程之间发生冲突,影响其他进程的运行。但是进程独立并不代表其不能互相通信,当进程之间需要通信时则会发起IPC的机制,而进程之间通信则可分为同主机之间进程通信和不同主机之间进程通信,同主机之间进程通信时,通常采用发信号、共享内存、互斥锁等机制进行;不同主机上的进程之间通信则采用套接字和RPC机制进行。

进程的状态

    虽然现在的计算机都是多用户多任务的计算机,而上文已经说到启动一个服务时就会由进程启动另一个子进程,多任务则意味着可同时启动多个进程,但是站在CPU的角度来说,某一时刻在其之上运行的进程有且只能有一个,而其余进程则会被内核放置到为其准备的一段内存之中。所以进程在内存中是有状态之分的,按照其是否被调入CPU运行可分为:运行态、睡眠态、就绪态、停止态和僵死态。

进程管理相关命令之查看常用命令:ps、pstree、pgrep

    ps:查看当前系统进程 

        用法 ps [OPTIONS]

        -a:查看与终端相关的进程

        -x:查看与终端无关的进程

        -u:查看与用户相关的进程

        -e:显示所有进程

        -f:显示丰富格式信息

        -H:显示层级信息,查看进程之间的“父子”关系

        -o:用户自定义显示信息

例1:使用ps命令查看系统上与用户相关的进程的详细信息

[root@test ~]# ps -auf
Warning: bad syntax, perhaps a bogus ‘-‘? See /usr/share/doc/procps-3.2.8/FAQ
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root      4073  0.0  0.3 108472  1852 pts/0    Ss   07:52   0:00 -bash
root      4207  0.0  0.2 110204  1044 pts/0    R+   08:09   0:00  \_ ps -auf
root      2891  0.0  4.7 141220 23628 tty1     Ss+  06:10   0:01 /usr/bin/Xorg :0 -br -verbose -audit 4 -auth /var/run/gdm/a
root      3177  0.0  0.3 108472  1924 tty2     Ss+  06:13   0:00 -bash
root      2861  0.0  0.1   4064   544 tty6     Ss+  06:10   0:00 /sbin/mingetty /dev/tty6
root      2859  0.0  0.1   4064   544 tty5     Ss+  06:10   0:00 /sbin/mingetty /dev/tty5
root      2857  0.0  0.1   4064   540 tty4     Ss+  06:10   0:00 /sbin/mingetty /dev/tty4
root      2855  0.0  0.1   4064   544 tty3     Ss+  06:10   0:00 /sbin/mingetty /dev/tty3

    pstree:查看当前系统进程,以进程树形式显示

        用法 pstree [OPTIONS]

            -v:显示版本号

            -u:显示与用户相关信息

            -a:不显示每个程序的完整指令

例2:使用pstree命令查看当前系统进程树

[root@test ~]# pstree -h
init─┬─NetworkManager─┬─dhclient
     │                └─{NetworkManager}
     ├─abrtd
     ├─acpid
     ├─atd
     ├─auditd───{auditd}
     ├─bluetoothd
     ├─bonobo-activati───{bonobo-activat}
     ├─console-kit-dae───63*[{console-kit-da}]
     ├─crond
     ├─cupsd
     ├─2*[dbus-daemon───{dbus-daemon}]
     ├─dbus-launch
     ├─devkit-power-da
     ├─gconfd-2
     ├─gdm-binary─┬─gdm-simple-slav─┬─Xorg
     │            │                 ├─gdm-session-wor
     │            │                 ├─gnome-session─┬─at-spi-registry
     │            │                 │               ├─gdm-simple-gree
     │            │                 │               ├─gnome-power-man
     │            │                 │               ├─metacity
     │            │                 │               ├─plymouth-log-vi
     │            │                 │               ├─polkit-gnome-au
     │            │                 │               └─{gnome-session}
     │            │                 └─{gdm-simple-sla}
     ...后面已省略

    pgrep:过滤当前系统进程

        用法:pgrep [OPTION] [PID]|[NAME]

                     -l:同时显示进程名和PID

例3:显示当前系统上与ssh服务相关的进程名和PID      

[root@test ~]# pgrep -l ssh
2559 sshd
4066 sshd

动态交互式进程管理工具:top,htop,glances

    top:以交互式界面查看和管理进程 

        常用用法: top [-dbn] 

             -b:以批次显示,并显示所有进程的状态

     -d:指定刷新延时时长

     -n:后接数字,指定显示的批次数量

             交互式命令: 

                    P:以占据CPU百分比大小排序

    M:以占据Memory空间大小排序

    T:cpu累积占据时间排序

    l:是否显示uptime行

    t:是否显示进程状态信息及cpu负载状态

    1:显示cpu的平均负载

    m:是否显示内存相关信息

    q:终止显示

    s:修改刷新时间间隔

    k:后接pid,杀死指定进程

例4:查看当前进程并以批次显示,2秒刷新一次,一共显示2屏

[root@test ~]# top -b -d 1 -n 2
top - 09:51:03 up  3:41,  2 users,  load average: 0.00, 0.00, 0.00
Tasks: 112 total,   1 running, 111 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.1%us,  0.4%sy,  0.0%ni, 98.9%id,  0.5%wa,  0.0%hi,  0.1%si,  0.0%st
Mem:    494164k total,   326476k used,   167688k free,    30680k buffers
Swap:  1015804k total,        0k used,  1015804k free,   122340k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                        
   13 root      20   0     0    0    0 S  5.5  0.0   0:00.19 sync_supers                                                    
 4744 root      20   0 15032 1100  828 R  1.8  0.2   0:00.02 top                                                            
    1 root      20   0 19364 1536 1224 S  0.0  0.3   0:01.75 init                                                           
    2 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kthreadd                                                       
    3 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 migration/0                     后续已省略...

top - 09:51:04 up  3:41,  2 users,  load average: 0.00, 0.00, 0.00
Tasks: 112 total,   1 running, 111 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.0%us,  1.0%sy,  0.0%ni, 99.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:    494164k total,   326492k used,   167672k free,    30680k buffers
Swap:  1015804k total,        0k used,  1015804k free,   122340k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                        
 4744 root      20   0 15040 1196  916 R  1.9  0.2   0:00.04 top                                                            
 4066 root      20   0 98.1m 4424 3416 S  1.0  0.9   0:01.38 sshd                                                           
    1 root      20   0 19364 1536 1224 S  0.0  0.3   0:01.75 init                                                           
    2 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kthreadd                                                       
    3 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 migration/0                                                    
   后续已省略...


top显示信息总结(以上个实验为例): 

top - 09:51:04 up  3:41,  2 users,  load average: 0.00, 0.00, 0.00
Tasks: 112 total,   1 running, 111 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.0%us,  1.0%sy,  0.0%ni, 99.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:    494164k total,   326492k used,   167672k free,    30680k buffers
Swap:  1015804k total,        0k used,  1015804k free,   122340k cached

  第一行

    top-09:51:04:当前时间    

    up 3:41:总共运行时长    

    load average:平均负载(后三数字分别表示过去5,10,15分钟的平均负载)    

  第二行

    task:作业数总计    

    running:处于运行态的作业数    

    sleeping:处于睡眠态的作业数    

    stopped:处于停止态的作业数    

    zombie:处于僵死态的作业数

 第三行

    cpus:当前cpu占用率    

    sys:cpu用于内核空间进程的占用率    

    ni:cpu用于调整nice值所消耗的百分比 

    id:空闲百分比

    wa:等待io所消耗百分比

    hi:硬件中断所占用百分比

    si:处理软中断所占用百分比

    st:被虚拟化软件所占用的百分比

 第四行

    Mem:内存总量

    #k userd:被使用的内存量

    #k free:空闲量

    #k 缓冲所使用内存量

第五行

    Swap:swap交换分区总量,后续值和第四行一样,不再赘述

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND

     USER:进程所属用户

     PID:进程号

     %CPU:cpu占用百分比

     %MEM:内存占用百分比

     VSZ:虚拟内存集

     RSS:常驻内存集

     TTY:启动进程的终端

     STAT:进程状态

     START:启动时间

     TIME: 累积占用CPU时长

     htop:和top功能类似,以更直观的方式显示和管理进程

技术分享

        常用用法:htop [dus]

           选项含义:-d #:指定延时时长为#妙

                     -u USERNAME:指定只显示和USERNAME用户相关进程

                     -s COLUMN:指定排序的字段如PID USERNAME等

           交互式命令:

                   u:-->接着选择用户,只显示指定用户的进程,

   s:跟踪选定进程所发起的系统调用

           l:列出选定进程所操作过的文件

   t:显示进程的层级结构

   a:可以选择把选定进程绑定于某CPU

                     P:使用CPU占用率作为排序关键字

                     M:使用内存占用率作为排序关键字

                     T:使用累积占用CPU时长作为排序关键字

                     F1:帮助

                     F2:设置相关参数

                     F3:查找,可指定关键字

                     F4:标记

                     F5:显示进程树

                     F6:排序依据,可指定排序关键字
                   F7、F8:降低和调高nice值

                   F9:向指定进程发信号,可指定所发信号

                   F10:退出

    glances:交互式系统性能指标监控工具

        用法:glances [OPTION] 

    技术分享        

    选项:

-b:以Byte/s为单位,显示网卡设备数据交换数率

-d:不显示磁盘IO那块统计数据

-f /PATH/TO/FILE:设置输出文件的位置及格式

-o:{HTML|CSV}:设定文件的输出格式

-m:关闭mount功能模块

-n:关闭网络功能模块

-r:关闭进程列表功能模块

-t #:指定延时时长,默认为3秒

-1:单独显示每颗cpu的相关数据信息

    glances还支持C/S模式工作           

                服务器模式配置

    glances -s -B IPADDR

    -B:用于指明监听的本地地址

客户端模式配置

    glancess -c IPADDR

    -c:用于连入的服务器地址

例5:配置glances使之工作于C/S架构下

    1.配置Server端

[root@dsl-189-172-5-105-dyn yum.repos.d]# glances -s -B 189.172.5.105
Glances server is running on 189.172.5.105:61209

   2.配置Client端    

[root@dsl-189-172-5-105-dyn ~]# glances -c 189.172.5.105

系统信息统计工具dstat

    dstat:全面整合命令vmstat,iostat netstat,nfsstat和ifstat综合显示系统信息

                用法: dstat [-afv] [options..] [delay [count]]

                    选项

                -c:显示cpu性能指标相关的统计数据

-d:显示disk相关的速率数据

-l:显示平均负载情况

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

-i(--int):中断相关的统计数率

-m:内存相关的统计数据

-n:网络相关的统计数据

-N 接口:只显示指定网卡接口的相关速率

-p:显示进程相关的统计数据

-r:指定io相关的

-s:显示swap的相关数据

-t:显示时间

-y:显示系统相关的数据,包括中断和进程切换

--top-cpu:显示最占用cpu的进程

--top-bio:显示最小号block io的进程

--top-cputime:显示最消耗cpu时长的

--top-io:显示最消耗io的进程

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

--ipc:显示用于进程间通信的速率数据

--raw:显示raw套接字的相关数据

--tcp:显示tcp套接字的相关数据

--udp:显示udp相关的套接字数据

--unix:显示unix统计数据

--socket:显示上述从raw开始的信息

例6:显示当前系统cpu、磁盘、内存使用信息

[root@dsl-189-172-5-105-dyn ~]# dstat -c -m -d
----total-cpu-usage---- ------memory-usage----- -dsk/total-
usr sys idl wai hiq siq| used  buff  cach  free| read  writ
  0   1  99   0   0   0| 188M 35.1M  183M 76.2M|  12k   10k
  0   0 100   0   0   0| 188M 35.1M  183M 76.2M|   0     0 
  0   0 100   0   0   0| 188M 35.1M  183M 76.2M|   0     0 
  0   0 100   0   0   0| 189M 35.1M  183M 76.0M|   0     0 
  1   1  98   0   0   0| 189M 35.1M  183M 76.0M|   0     0 ^C




    

    

本文出自 “linux-冒泡” 博客,请务必保留此出处http://7703592.blog.51cto.com/7693592/1634812

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。