码迷,mamicode.com
首页 > 系统相关 > 详细

Linux进程管理简谈

时间:2016-07-12 23:37:45      阅读:1000      评论:0      收藏:0      [点我收藏+]

标签:进程管理

技术分享

Linux系统进程管理简谈

进程是什么?

简单来说进程是一个正在执行的程序的一个副本,存在生命周期,有段指令和代码在不断运行。


linux内核存储信息的固定格式:task struct

进程的相关信息存储在链表中

多个任务的task struct组件的链表:task list

进程的创建:父进程创建子进程(内核创建init进程,剩余一切进程有init及其子进程进程创建)

父进程创建子进程时向内核调用fork()来创建子进程并且通过调用clone()复制父进程的信息给子进程

Linux进程的优先级

0-139:

  1. 1-99:实时优先级(数字越大优先级越高)

  2. 100-139:静态优先级(数字越小优先级越高)

Nice值:
    静态优先级中:
    Linux nice用来设置进程优先级,优先级的数值为-20~19,其中数值越小优先级越高,数值越大优先级越低,-20的优先级最高,19的优先级最低,默认的优先级数值为10。
                需要注意的是普通用户只能在0~19之间调整应用程序的优先权值,只有超级用户有权调整更高的优先权值(从-20~19)。

进程队列

Linux根据进程优先级将具有相同优先级的进程分配在一个队列中,共计140个队列。
             这样内核每次只需要扫描140个队列的头部就可确定执行哪一个进程。
             而每个优先级的队列又分俩队,运行队列和过期队列,运行过的进程将被
             放到过期队列中,当运行队列中的进程执行完毕后,俩队列的内容将会对调。

Linux进程内存

  内存中给进程分配内存时会将所分配的内存分为长度为4KB或8KB的块,这种块
叫页框(Page Frame)。然后根据进程需要分配空闲页框。

线性地址空间与物理地址空间

 应用程序运行在自己的地址空间内,这个地址空间称为线性地址空间,所有数据在线
性地址空间内部表现为页面的形式存放,而不是分页的数据无法交换至swap空间。
 进程访问数据是从线性地址访问,内核将线性地址转换成物理地址,使得进程得以访
问到数据。
 线性地址与物理地址的对应关系存放在一张表中,这引表在MMU(Memory Management
Unit)中进行维护。
 内核借助MMU来使得各个进程使用内核时好像是独立的状态;MMU完成线性地址到物理
地址的转换。
 内核精心编造了一个数据结构,假如内存如果有4G的话,1G分配给内核使用,3G分配
给进程使用;这个数据结构使用得每个进程都认为自己独占3G内存。

进程间通信

进程间通信(IPC:Inter Process Communication)
       同一主机间通信方式:

  • singnal:信号。

  • shm:共享内存。

  • semerphor:旗语。

不同主机间通信方式:

  • rpc:remote procedure calling,远程过程调用。

  • socket:IP:port,套接字。

Linux内核:抢占式多任务

进程的状态

技术分享
  1. 运行态:running

  2. 就绪态:ready

  3. 睡眠态

    1. 可中断

    2. 不可中断

  4. 停止态

  5. 僵死态

进程类型

进程类型:
      守护进程:在系统引导过程中启动的进程,跟终端无关的进程。
      前台进程:跟终端有关,通过终端启动的进程。
      前台进程也可送往后台,以守护模式进行。
     


Linux进程管理十八般兵器

技术分享

静态管理工具

pstree:进程树显示工具

                      	[root@tomtwo ~]# pstree
						init─┬─NetworkManager─┬─dhclient
						     │                └─{NetworkManager}
						     ├─abrtd
						     ├─acpid
						     ├─atd
						     ├─auditd───{auditd}
						     ├─automount───4*[{automount}]
						     ├─bonobo-activati───{bonobo-activat}
						     ├─certmonger
						     ├─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}
						     │            └─{gdm-binary}
						     ├─gnome-settings-───{gnome-settings}
						     ├─gvfsd
						     ├─hald─┬─hald-runner─┬─hald-addon-acpi
						     │      │             └─hald-addon-inpu
						     │      └─{hald}
						     ├─master─┬─pickup
						     │        └─qmgr
						     ├─5*[mingetty]
						     ├─modem-manager
						     ├─polkitd
						     ├─pulseaudio───2*[{pulseaudio}]
						     ├─rpc.statd
						     ├─rpcbind
						     ├─rsyslogd───3*[{rsyslogd}]
						     ├─rtkit-daemon───2*[{rtkit-daemon}]
						     ├─sshd───sshd───bash───pstree
						     ├─udevd───2*[udevd]
						     └─wpa_supplicant
						[root@tomtwo ~]#

                     
                     

ps:进程状态查看工具

选项:
                          BSD风格选项:

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

  • a:与终端相关的进程

  • x:与终端无关的进程


                          范例:aux组合使用

                           	[root@tomtwo ~]# ps aux
								USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
								root         1  0.0  0.1  19360  1532 ?        Ss   07:39   0:01 /sbin/init
								root         2  0.0  0.0      0     0 ?        S    07:39   0:00 [kthreadd]
								root         3  0.0  0.0      0     0 ?        S    07:39   0:00 [migration/0]
								root         4  0.0  0.0      0     0 ?        S    07:39   0:00 [ksoftirqd/0]
								root         5  0.0  0.0      0     0 ?        S    07:39   0:00 [stopper/0]
								root         6  0.0  0.0      0     0 ?        S    07:39   0:00 [watchdog/0]
								root         7  0.0  0.0      0     0 ?        R    07:39   0:01 [events/0]
								root         8  0.0  0.0      0     0 ?        S    07:39   0:00 [cgroup]
								root         9  0.0  0.0      0     0 ?        S    07:39   0:00 [khelper]
								root        10  0.0  0.0      0     0 ?        S    07:39   0:00 [netns]
								root        11  0.0  0.0      0     0 ?        S    07:39   0:00 [async/mgr]
								root        12  0.0  0.0      0     0 ?        S    07:39   0:00 [pm]
								root        13  0.0  0.0      0     0 ?        S    07:39   0:00 [sync_supers]
								root        14  0.0  0.0      0     0 ?        S    07:39   0:00 [bdi-default]
								root        15  0.0  0.0      0     0 ?        S    07:39   0:00 [kintegrityd/0]
								root        16  0.0  0.0      0     0 ?        S    07:39   0:00 [kblockd/0]
								root        17  0.0  0.0      0     0 ?        S    07:39   0:00 [kacpid]
								root        18  0.0  0.0      0     0 ?        S    07:39   0:00 [kacpi_notify]
								root        19  0.0  0.0      0     0 ?        S    07:39   0:00 [kacpi_hotplug]
								root        20  0.0  0.0      0     0 ?        S    07:39   0:00 [ata_aux]
								root        21  0.0  0.0      0     0 ?        S    07:39   0:00 [ata_sff/0]
								root        22  0.0  0.0      0     0 ?        S    07:39   0:00 [ksuspend_usbd]
								root        23  0.0  0.0      0     0 ?        S    07:39   0:00 [khubd]
								root        24  0.0  0.0      0     0 ?        S    07:39   0:00 [kseriod]
								root        25  0.0  0.0      0     0 ?        S    07:39   0:00 [md/0]
								root        26  0.0  0.0      0     0 ?        S    07:39   0:00 [md_misc/0]
								root        27  0.0  0.0      0     0 ?        S    07:39   0:00 [linkwatch]
								root        29  0.0  0.0      0     0 ?        S    07:39   0:00 [khungtaskd]
								           省略N行
								root        30  0.0  0.0      0     0 ?        S    07:39   0:00 [kswapd0]
								root        31  0.0  0.0      0     0 ?        SN   07:39   0:00 [ksmd]
								root        32  0.0  0.0      0     0 ?        SN   07:39   0:00 [khugepaged]
								root        33  0.0  0.0      0     0 ?        S    07:39   0:00 [aio/0]
								root        34  0.0  0.0      0     0 ?        S    07:39   0:00 [crypto/0]
								root        42  0.0  0.0      0     0 ?        S    07:39   0:00 [kthrotld/0]
								root        43  0.0  0.0      0     0 ?        S    07:39   0:00 [pciehpd]
								root        45  0.0  0.0      0     0 ?        S    07:39   0:00 [kpsmoused]
								root        46  0.0  0.0      0     0 ?        S    07:39   0:00 [usbhid_resumer]
								root        47  0.0  0.0      0     0 ?        S    07:39   0:00 [deferwq]
								root        79  0.0  0.0      0     0 ?        S    07:39   0:00 [kdmremove]
								root        80  0.0  0.0      0     0 ?        S    07:39   0:00 [kstriped]
								root       155  0.0  0.0      0     0 ?        S    07:39   0:00 [scsi_eh_0]
								root       156  0.0  0.0      0     0 ?        S    07:39   0:00 [scsi_eh_1]
								gdm       1905  0.0  1.0 293784 10364 ?        S    07:41   0:00 metacity
								gdm       1908  0.0  1.4 315620 14480 ?        S    07:41   0:00 plymouth-log-viewer --icon
								gdm       1909  0.0  0.8 274384  9028 ?        S    07:41   0:00 gnome-power-manager
								gdm       1910  0.0  1.8 413212 18532 ?        S    07:41   0:00 /usr/libexec/gdm-simple-greeter
								gdm       1913  0.0  0.7 248960  7780 ?        S    07:41   0:00 /usr/libexec/polkit-gnome-authentication-agent-1
								root      1918  0.0  0.4  52740  4504 ?        S    07:41   0:00 /usr/libexec/polkit-1/polkitd
							
								[root@tomtwo ~]#

   ps aux 命令详解
       USER:进程属主
       PID:进程PID
       %CPU:进程运行占据的CPU时间百分比。
       %MEM:占据内存空间百分比。
       VSZ:虚拟内存集。
       RSS:常驻内存集。
       STAT:进程状态

进程状态:

  • R:运行

  • S:可中断睡眠

  • D:不可中断睡眠

  • T:停止态

  • Z:僵死态

  • +:前台进程

  • l:多线程进程

  • N:低优先级进程

  • <: 高优先级进程

  • s:session leader

       START:启动时间。
       TIME:累计时长
       COMMAND:由哪个命令运行启动此进程。
标准语法风格选项:

  • -e;显示所有进程(相当于aux)

  • -j:任务格式

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

  • -H:以层级格式显示

  • -F:显示完整格式进程信息(比-f更加完整)

  • -o:指明要显示的信息

范例:

                                	
									[root@tomtwo ~]# ps -ef | head
									UID        PID  PPID  C STIME TTY          TIME CMD
									root         1     0  0 07:39 ?        00:00:01 /sbin/init
									root         2     0  0 07:39 ?        00:00:00 [kthreadd]
									root         3     2  0 07:39 ?        00:00:00 [migration/0]
									root         4     2  0 07:39 ?        00:00:00 [ksoftirqd/0]
									root         5     2  0 07:39 ?        00:00:00 [stopper/0]
									root         6     2  0 07:39 ?        00:00:00 [watchdog/0]
									root         7     2  0 07:39 ?        00:00:03 [events/0]
									root         8     2  0 07:39 ?        00:00:00 [cgroup]
									root         9     2  0 07:39 ?        00:00:00 [khelper]
									[root@tomtwo ~]#

                               范例:

[root@tomtwo ~]# ps -eFH | head
									UID        PID  PPID  C    SZ   RSS PSR STIME TTY          TIME CMD
									root         2     0  0     0     0   0 07:39 ?        00:00:00 [kthreadd]
									root         3     2  0     0     0   0 07:39 ?        00:00:00   [migration/0]
									root         4     2  0     0     0   0 07:39 ?        00:00:00   [ksoftirqd/0]
									root         5     2  0     0     0   0 07:39 ?        00:00:00   [stopper/0]
									root         6     2  0     0     0   0 07:39 ?        00:00:00   [watchdog/0]
									root         7     2  0     0     0   0 07:39 ?        00:00:07   [events/0]
									root         8     2  0     0     0   0 07:39 ?        00:00:00   [cgroup]
									root         9     2  0     0     0   0 07:39 ?        00:00:00   [khelper]
									root        10     2  0     0     0   0 07:39 ?        00:00:00   [netns]
[root@tomtwo ~]#

                               
                               

pidof:根据进程名获取其PID

范例:

                 [root@tomtwo ~]# pidof metaci
                   1905
		 [root@tomtwo ~]#

动态进程管理工具

top:交互式进程状态查看工具

                                	top - 10:49:05 up  3:09,  2 users,  load average: 0.00, 0.00, 0.00
									Tasks: 113 total,   1 running, 112 sleeping,   0 stopped,   0 zombie
									Cpu(s):  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
									Mem:   1012288k total,   547788k used,   464500k free,    46056k buffers
									Swap:  2031612k total,        0k used,  2031612k free,   281056k cached

									  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                                                                                                                                         
									    7 root      20   0     0    0    0 S  0.3  0.0   0:08.45 events/0                                                                                                                                                                                                         
									 5020 root      20   0 15036 1216  928 R  0.3  0.1   0:00.01 top                                                                                                                                                                                                              
									    1 root      20   0 19360 1536 1224 S  0.0  0.2   0:01.80 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                                                                                                                                                                                                      
									    4 root      20   0     0    0    0 S  0.0  0.0   0:00.02 ksoftirqd/0                                                                                                                                                                                                      
									    5 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 stopper/0                                                                                                                                                                                                        
									    6 root      RT   0     0    0    0 S  0.0  0.0   0:00.02 watchdog/0                                                                                                                                                                                                       
									    8 root      20   0     0    0    0 S  0.0  0.0   0:00.00 cgroup                                                                                                                                                                                                           
									    9 root      20   0     0    0    0 S  0.0  0.0   0:00.00 khelper                                                                                                                                                                                                          
									   10 root      20   0     0    0    0 S  0.0  0.0   0:00.00 netns                                                                                                                                                                                                            
									   11 root      20   0     0    0    0 S  0.0  0.0   0:00.00 async/mgr                                                                                                                                                                                                        
									   12 root      20   0     0    0    0 S  0.0  0.0   0:00.00 pm                                                                                                                                                                                                               
									   13 root      20   0     0    0    0 S  0.0  0.0   0:00.05 sync_supers  
									        ......省略N行

                                  现在top的显示的默认按照CPU% 排序的,我们此时输入top的内置命令M可以按照内存%排序。

                                    top - 10:55:54 up  3:16,  2 users,  load average: 0.00, 0.00, 0.00
									Tasks: 113 total,   1 running, 112 sleeping,   0 stopped,   0 zombie
									Cpu(s):  0.0%us,  0.3%sy,  0.0%ni, 99.7%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

									  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                                                                                                                                         
									 1777 root      20   0  171m  22m 6364 S  0.0  2.3   0:02.32 Xorg                                                                                                                                                                                                             
									 1910 gdm       20   0  403m  18m  12m S  0.0  1.8   0:00.54 gdm-simple-gree                                                                                                                                                                                                  
									 1908 gdm       20   0  308m  14m  10m S  0.0  1.4   0:00.12 plymouth-log-vi                                                                                                                                                                                                  
									 1894 gdm       20   0  349m  12m  10m S  0.0  1.3   0:00.93 gnome-settings-                                                                                                                                                                                                  
									 1905 gdm       20   0  286m  10m 7856 S  0.0  1.0   0:00.14 metacity                                                                                                                                                                                                         
									 1909 gdm       20   0  267m 9028 7204 S  0.0  0.9   0:00.17 gnome-power-man                                                                                                                                                                                                  
									 1867 gdm       20   0  263m 8252 6556 S  0.0  0.8   0:00.12 gnome-session                                                                                                                                                                                                    
									 1913 gdm       20   0  243m 7780 6188 S  0.0  0.8   0:00.04 polkit-gnome-au                                                                                                                                                                                                  
									 1875 gdm       20   0  130m 5696 2260 S  0.0  0.6   0:00.27 gconfd-2                                                                                                                                                                                                         
									 1405 haldaemo  20   0 39144 5360 4344 S  0.0  0.5   0:00.38 hald                                                                                                                                                                                                             
									 1918 root      20   0 52740 4504 3208 S  0.0  0.4   0:00.12 polkitd                                                                                                                                                                                                          
									 1291 root      20   0 93112 4448 3664 S  0.0  0.4   0:00.22 NetworkManager                                                                                                                                                                                                   
									 4901 root      20   0 98.1m 4444 3436 S  0.0  0.4   0:00.65 sshd                                                                                                                                                                                                             
									 1945 root      20   0 98.1m 4436 3436 S  0.0  0.4   0:00.38 sshd                         
										    ......省略N行

                                    top命令与排序相关的内置命令:
                                           M: 内存百分比
                                           P: CPU百分比
                               T: 累积占用的CPU时间

top命令首部信息详解

			                       	 top - 10:55:54 up  3:16,  2 users,  load average: 0.00, 0.00, 0.00
									Tasks: 113 total,   1 running, 112 sleeping,   0 stopped,   0 zombie
									Cpu(s):  0.0%us,  0.3%sy,  0.0%ni, 99.7%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

                      这段首部信息中:
                          top - 10:55:54 表示当前系统时间。
                          up  3:16 表示运行时长。
                          2 users 表示当前系统登录用户数。
                          load average: 0.00, 0.00, 0.00 表示过去一分钟,五分钟,十五分钟CPU的平均负载。
                         
                          Tasks:进程树相关信息(通过内置命令t调出或关闭)。
                            113 total表示当前总进程数目。
                            1 running表示当前运行的进程数目。
                            112 sleeping表示当前睡眠状态的进程数目。
                            0 stopped,   0 zombie表示当前停止态和僵死态的进程数目。

			                             Cpu(s):  0.0%us,  0.3%sy,  0.0%ni, 99.7%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

                            这行CPU相关信息同样可以通过内置命令t调出或关闭,根据CPU核心树不同显示条目多少不同。
                            us:表示用户空间占据百分比。
                            sy:表示内核空间占据百分比。
                            ni:调整NICE值占据时间。
                            id:空闲比例。
                            wa:等待I/O完成时间。
                            hi:硬件中断消耗百分比。
                            si:软件中断消耗百分比。
                            st:被偷走的比例(被虚拟化技术偷走的时间)。

			                       	    top - 11:58:41 up  4:18,  2 users,  load average: 0.00, 0.00, 0.00
										Tasks: 113 total,   1 running, 112 sleeping,   0 stopped,   0 zombie
										Cpu(s):  0.3%us,  0.0%sy,  0.0%ni, 99.3%id,  0.0%wa,  0.0%hi,  0.3%si,  0.0%st
										Mem:   1012288k total,   549152k used,   463136k free,    47076k buffers
										Swap:  2031612k total,        0k used,  2031612k free,   281084k cached

                        这段信息中的Mem和Swap这俩行信息可以使用内置命令m调出或关闭。
                        退出top命令可以使用内置命令q。

修改TOP命令刷新时间

                                     	
							[root@tomtwo ~]# top
							top - 12:12:22 up  4:32,  2 users,  load average: 0.00, 0.00, 0.00
							Tasks: 113 total,   1 running, 112 sleeping,   0 stopped,   0 zombie
							Cpu(s):  0.1%us,  0.3%sy,  0.0%ni, 98.9%id,  0.7%wa,  0.0%hi,  0.0%si,  0.0%st
							Mem:   1012288k total,   549004k used,   463284k free,    47308k buffers
							Swap:  2031612k total,        0k used,  2031612k free,   281092k cached
							Change delay from 3.0 to:   #默认刷新时间为每3秒刷新一次。
							 PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                                                                                                                                         
							  5317 root      20   0 15032 1104  824 R  2.0  0.1   0:00.01 top                                                                                                                                                                                                              
							 1 root      20   0 19360 1536 1224 S  0.0  0.2   0:01.84 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

                                        通过内置命令s可以修改TOP命令的刷新时间(单位为秒)。
                                        top模式下还可以通过内置命令k来杀死一个进程。

                                         	top - 12:17:44 up  4:37,  1 user,  load average: 0.00, 0.00, 0.00
											Tasks: 111 total,   1 running, 110 sleeping,   0 stopped,   0 zombie
											Cpu(s):  0.1%us,  0.3%sy,  0.0%ni, 98.9%id,  0.7%wa,  0.0%hi,  0.0%si,  0.0%st
											Mem:   1012288k total,   547508k used,   464780k free,    47380k buffers
											Swap:  2031612k total,        0k used,  2031612k free,   281096k cached
											PID to kill:                                                                         #在此输入指定进程的PID即可啥指定进程
											  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                                                                                                                                         
											    1 root      20   0 19360 1536 1224 S  0.0  0.2   0:01.84 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                                                                                                                                                                                                      
											    4 root      20   0     0    0    0 S  0.0  0.0   0:00.07 ksoftirqd/0                                                                                                                                                                                                      
											    5 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 stopper/0

TOP命令的选项

常用选项:

  • -d #: 指定刷新时间间隔

  • -b: 以批次的方式显示top的刷新

  • -n #: 显示的批次

后起之秀:htop

技术分享               可以看到htop的界面非常漂亮              
             
                技术分享                 在htop界面的最下端可以看到htop的快捷键信息。                
                技术分享                 按下F1可以查看htop的帮助信息                  技术分享                  F5可以进程树方式显示。                   技术分享                   F2可以对htop进行设置,在这里我们将CPU,内存,交换内存的显示方式改为文本形式。                  
                  htop的内置命令:

  • u: 交互式选择显示指定用户的进程

  • l: 显示光标所在进程所打开的文件列表

  • s: 显示光标所在进程执行的系统调用

  • a: 绑定进程到指定的CPU

  • #:快速定位光标至PID为#的进程上

htop命令的选项

选项:
                        -d #:指定延迟时间
                        -u UserName:仅显示指定用户的进程
                        -s COLUMN:以指定字段进行排序

vmstat:报告虚拟内存统计信息

语法:vmstat 采样的时间间隔数(单位为秒) 采样的次数
                  范例:vmstat 2 1              #2表示每隔两秒采集一次服务器状态,1表示只采集一次

				                   [root@tomtwo ~]# vmstat 2 1
									procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
									 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
									 0  0      0 599936  44748 148888    0    0    33     4   24   25  0  1 98  1  0	
									[root@tomtwo ~]#

                 说明:

				                  	procs:
										r: 运行队列的长度
										b: 被阻塞(等待IO完成)队列的长度

									memory: 
										swpd: 从物理内存交换至swap中的数据量
										free: 空间物理内存
										buffer:
										cache:

									swap:
										si: swap in, 数据进入swap中的数据速率,kb/s
										so: swap out,数据离开swap中的数据速率

									io:
										bi: block in, 从块设备读入的数据速率,kb/s
										bo: block out,保存至块设备的数据速率

									system:
										in: interrupt, 中断速率
										cs: context switch, 进程切换速率

									cpu:
										us, sy, id, wa, st

									-s: 显示内存统计数据

                 
                 

				                  	[root@tomtwo ~]# vmstat -s
								      1012288  total memory
								       412592  used memory
								       115272  active memory
								       148320  inactive memory
								       599696  free memory
								        44988  buffer memory
								       148900  swap cache
								      2031612  total swap
								            0  used swap
								      2031612  free swap
								         1092 non-nice user cpu ticks
								          131 nice user cpu ticks
								         3924 system cpu ticks
								       691067 idle cpu ticks
								         5973 IO-wait cpu ticks
								            5 IRQ cpu ticks
								          219 softirq cpu ticks
								            0 stolen cpu ticks
								       199233 pages paged in
								        27497 pages paged out
								            0 pages swapped in
								            0 pages swapped out
								       154233 interrupts
								       163892 CPU context switches
								   1468200790 boot time
								         2660 forks
								   [root@tomtwo ~]#

pmap:报告进程线性地址与物理地址映射关系

语法:pmap 选项 pid

                      [root@tomtwo ~]# pmap 1
					1:   /sbin/init
					00007fafca319000     48K r-x--  /lib64/libnss_files-2.12.so
					00007fafca325000   2048K -----  /lib64/libnss_files-2.12.so
					00007fafca525000      4K r----  /lib64/libnss_files-2.12.so
					00007fafca526000      4K rw---  /lib64/libnss_files-2.12.so
					00007fafca527000   1576K r-x--  /lib64/libc-2.12.so
					00007fafca6b1000   2048K -----  /lib64/libc-2.12.so
					00007fafca8b1000     16K r----  /lib64/libc-2.12.so
					00007fafca8b5000      4K rw---  /lib64/libc-2.12.so
					00007fafca8b6000     20K rw---    [ anon ]
								
									[root@tomtwo ~]#

                                pmap选项:
                                 -x :显示详细格式的信息

glances:Linux系统实时监控利器

技术分享                          
                         
                          我们可以按h获取gnances的帮助信息。


							Glances 1.7.4 with PsUtil 0.6.1

							               CAREFULWARNINGCRITICAL
							  CPU user %      50.0  70.0  90.0    Swap %           50.0  70.0  90.0
							  CPU system %    50.0  70.0  90.0    Temp °C          60.0  70.0  80.0
							  CPU iowait %    40.0  60.0  80.0    HDD Temp °C      45.0  52.0  60.0
							  CPU steal %     10.0  15.0  20.0    文件系统         50.0  70.0  90.0
							  Load             0.7   1.0   5.0    CPU process %    50.0  70.0  90.0
							  RAM %           50.0  70.0  90.0    MEM process %    50.0  70.0  90.0
							  ......省略N行

							  a  自动排序                         l  Show/hide logs
							  c  根据CPU使用率排序                b  Bytes or bits for network I/O
							  m  根据内存占用比排序               w  删除警告日志
							  p  根据进程名字排序                 x  删除警告和严重级别的日
							  i  Sort processes by I/O rate       1  全局CPU或者每个CPU的状态
							  d  显示/隐藏硬盘I/O状态             h  Show/hide this help screen
							  f  显示/隐藏文件系统状态            t  View network I/O as combination
							  n  显示/隐藏network状态             u  View cumulative network I/O
							  s  显示/隐藏sensors状态             q  Quit (Esc and Ctrl-C also work)
							  y  显示/隐藏hddtemp状态

glances常用选项:

-b:以Byte为单位显示网卡数据数率。
                                 -d:关闭磁盘I/O模块。
                                 -f 目录路径 :设定输入文件位置。
                                 -o {HTML|CSV}: 输出格式。
                                 -m:禁用mount模块。
                                 -n:禁用网络模块。
                                 -t #:延迟时间间隔。
                                 -1:每个CPU的相关数据单独显示。

C/S模式下运行glances命令:

                            服务模式:
                                glances -s -B IP地址
                                #IP地址:指明监听于本机哪个地址
                            客户端模式:
                            glances -c IP地址
                            #IP地址:要连入的服务器端地址
                                 

dstat:性能检测工具

                        	----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system--
							usr sys idl wai hiq siq| read  writ| recv  send|  in   out | int   csw 
							  0   0 100   0   0   0|   0     0 |  60B  346B|   0     0 |  15    23 
							  0   0 100   0   0   0|   0     0 | 120B  868B|   0     0 |  20    17 
							  0   0  99   0   0   1|   0    40k|  60B  346B|   0     0 |  26    43 
							  0   0 100   0   0   0|   0     0 |  60B  346B|   0     0 |  17    16 
							  0   1  99   0   0   0|   0     0 |  60B  346B|   0     0 |  15    12 
							  1   0  99   0   0   0|   0     0 |  60B  346B|   0     0 |  16    14 
							  0   0 100   0   0   0|   0     0 |  60B  346B|   0     0 |  17    21 
							  0   0 100   0   0   0|   0     0 |  60B  346B|   0     0 |  18    17 
							  0   0 100   0   0   0|   0    40k|  60B  346B|   0     0 |  18    19 
							  0   1  99   0   0   0|   0     0 |  60B  346B|   0     0 |  21    17 
							  0   0 100   0   0   0|   0     0 |  60B  346B|   0     0 |  13    10 
							  0   0 100   0   0   0|   0     0 |  60B  346B|   0     0 |  22    21 
							  0   0 100   0   0   0|   0     0 |  60B  346B|   0     0 |  14    11 
							  0   0 100   0   0   0|   0     0 |  60B  346B|   0     0 |  19    15 
							  0   0  99   0   0   1|   0    12k|  60B  346B|   0     0 |  22    22 
							  1   1  98   0   0   0|   0     0 | 303B  346B|   0     0 |  20    14

                          执行 dstat 命令的时候,默认他会 收集-cpu-、-disk-、-net-、-paging-、-system-的数据,一秒钟收集一次。默认输入 dstat 等于输入了dstat -cdngy 1或dstat -a 1
                          语法:dstat 选项  采样的时间间隔数(单位为秒) 采样的次数

dstat常用选项

                          -c:显示CPU相关信息
                          -d;显示磁盘相关信息
                          -g:显示page相关统计数据。
                          -m:显示内存相关统计数据。
                          -n:显示网络相关统计数据。
                          -p:显示进程统计数据。
                          -r:显示I/O请求相关的统计数据。
                          -s:显示交换内存相关统计数据。
                         
                          --top-cpu;显示最占用CPU的进程。
                          --top-io:显示最占用I/O的进程。
                          --top-mem;显示最占用内存的进程。
                          --top-lantency:显示延迟最大的进程。

Kill命令:向进程发送控制信号

kill -l :显示当前系统可用信号。

            [root@tomtwo ~]# kill -l
			 1) SIGHUP	 2) SIGINT	 3) SIGQUIT	 4) SIGILL	 5) SIGTRAP
			 6) SIGABRT	 7) SIGBUS	 8) SIGFPE	 9) SIGKILL	10) SIGUSR1
			11) SIGSEGV	12) SIGUSR2	13) SIGPIPE	14) SIGALRM	15) SIGTERM
			16) SIGSTKFLT	17) SIGCHLD	18) SIGCONT	19) SIGSTOP	20) SIGTSTP
			21) SIGTTIN	22) SIGTTOU	23) SIGURG	24) SIGXCPU	25) SIGXFSZ
			26) SIGVTALRM	27) SIGPROF	28) SIGWINCH	29) SIGIO	30) SIGPWR
			31) SIGSYS	34) SIGRTMIN	35) SIGRTMIN+1	36) SIGRTMIN+2	37) SIGRTMIN+3
			38) SIGRTMIN+4	39) SIGRTMIN+5	40) SIGRTMIN+6	41) SIGRTMIN+7	42) SIGRTMIN+8
			43) SIGRTMIN+9	44) SIGRTMIN+10	45) SIGRTMIN+11	46) SIGRTMIN+12	47) SIGRTMIN+13
			48) SIGRTMIN+14	49) SIGRTMIN+15	50) SIGRTMAX-14	51) SIGRTMAX-13	52) SIGRTMAX-12
			53) SIGRTMAX-11	54) SIGRTMAX-10	55) SIGRTMAX-9	56) SIGRTMAX-8	57) SIGRTMAX-7
			58) SIGRTMAX-6	59) SIGRTMAX-5	60) SIGRTMAX-4	61) SIGRTMAX-3	62) SIGRTMAX-2
			63) SIGRTMAX-1	64) SIGRTMAX	
			[root@tomtwo ~]#

                  常用信号:

  • 1) SIGHUP: 无须关闭进程而让其重读配置文件;

  • 2) SIGINT: 中止正在运行的进程;相当于Ctrl+c;

  • 9) SIGKILL: 杀死正在运行的进程;

  • 15) SIGTERM:终止正在运行的进程;

  • 18) SIGCONT:使处于停止态的进行恢复运行

  • 19) SIGSTOP:停止正在运行的进程

指定信号的方法:

  • (1) 信号的数字标识;1, 2, 9

  • (2) 信号完整名称;SIGHUP

  • (3) 信号的简写名称;HUP

向进程发信号:
                 kill [-SIGNAL] PID...
                 # SIGNAL:指定信号的方法
        终止“名称”之下的所有进程:
  killall [-SIGNAL] Program

本文出自 “汤姆的博客” 博客,请务必保留此出处http://3037673.blog.51cto.com/3027673/1825848

Linux进程管理简谈

标签:进程管理

原文地址:http://3037673.blog.51cto.com/3027673/1825848

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!