Linux进程管理简谈

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:进程树显示工具

                      	[[email protected] ~]# 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
						[[email protected] ~]#

ps:进程状态查看工具

选项:
                          BSD风格选项:

  • u:以用户为中心组织进程状态信息显示
  • a:与终端相关的进程
  • x:与终端无关的进程

范例:aux组合使用

                           	[[email protected] ~]# 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

								[[email protected] ~]#

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:指明要显示的信息

范例:

                                
									[[email protected] ~]# 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]
									[[email protected] ~]#

范例:

[[email protected] ~]# 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]
[[email protected] ~]#

pidof:根据进程名获取其PID

范例:

                 [[email protected] ~]# pidof metaci
                   1905
		 [[email protected] ~]#

动态进程管理工具

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命令刷新时间

                                     
							[[email protected] ~]# 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表示只采集一次

				                   [[email protected] ~]# 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
									[[email protected] ~]#

说明:

				                  	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: 显示内存统计数据
				                  	[[email protected] ~]# 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
								   [[email protected] ~]#

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

语法:pmap 选项 pid

                      [[email protected] ~]# 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 ]

									[[email protected] ~]#

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 :显示当前系统可用信号。

            [[email protected] ~]# 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
			[[email protected] ~]#

常用信号:

  • 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

时间: 2024-08-02 02:51:32

Linux进程管理简谈的相关文章

Linux进程管理与调度-之-目录导航【转】

转自:http://blog.csdn.net/gatieme/article/details/51456569 版权声明:本文为博主原创文章 && 转载请著名出处 @ http://blog.csdn.net/gatieme 目录(?)[-] 项目链接 进程的描述 进程的创建 进程的加载与运行 进程的退出 进程的调度 调度普通进程-完全公平调度器CFS 日期 内核版本 架构 作者 GitHub CSDN 2016-07-21 Linux-4.6 X86 & arm gatieme

linux进程管理(5)---进程消亡

一.目的 本文将讲述进程是如何消亡的.一个进程既有父进程又有子进程,因此进程消亡时,既要通知父进程,也要安排好子进程. 当前进程消亡时主要做了三件大事:释放当前进程占用的资源:为当前进程的子进程重新寻找"养父":通知当前进程的父进程,释放当前进程剩下的资源. 当前进程释放掉大多数进程资源后,只保留内核栈.structtask_struct数据结构:剩下的资源由父进程负责释放. linux调用sys_exit().sys_wait4()实现进程的消亡,代码可以在kernel/exit.c

Linux性能及调优指南(翻译)之Linux进程管理

译文如下:1.1 Linux进程管理 进程管理是操作系统的最重要的功能之一.有效率的进程管理能保证一个程序平稳而高效地运行. Linux的进程管理与UNIX的进程管理相似.它包括进程调度.中断处理.信号.进程优先级.上下文切换.进程状态.进度内存等. 在本节中,我们将描述Linux进程管理的基本原理的实现.它将更好地帮助你理解Linux内核如何处理进程及其对系统性能的影响. 1.1.1 什么是进程?一个进程是一个运行在处理器的程序的一个实例.该进程使用Linux内核能够处理的任何资源来完成它的任

Linux进程管理知识整理

Linux进程管理知识整理 1.进程有哪些状态?什么是进程的可中断等待状态?进程退出后为什么要等待调度器删除其task_struct结构?进程的退出状态有哪些? TASK_RUNNING(可运行状态) TASK_INTERRUPTIBLE(可中断等待状态) TASK_UNINTERRUPTIBLE(不可中断等待状态) TASK_STOPPED(进程被其它进程设置为暂停状态) TASK_TRACED(进程被调试器设置为暂停状态) TASK_DEAD(退出状态) 进程由于所需资源得不到满足,从而进入

linux进程管理(四)

[教程主题]:进程管理 [1]进程介绍 程序和进程 程序是为了完成某种任务而设计的软件,比如OpenOffice是程序.什么是进程呢?进程就是运行中的程序. 一个运行着的程序,可能有多个进程. 比如自学it网所用的WWW服务器是apache服务器,当管理员启动服务后,可能会有好多人来访问,也就是说许多用户来同时请求httpd服务,apache服务器将会创建有多个httpd进程来对其进行服务. 进程分类: 进程一般分为交互进程.批处理进程和守护进程三类. 值得一提的是守护进程总是活跃的,一般是后台

Linux进程管理(3):总结

7. exit与_exit的差异    为了理解这两个系统调用的差异,先来讨论文件内存缓存区的问题. 在linux中,标准输入输出(I/O)函数都是作为文件来处理.对应于打开的每个文件,在内存中都有对应的缓存,每次读取文件时,会多读一些记录到缓存中,这样在下次读文件时,就在缓存中读取:同样,在写文件时也是写在文件对应的缓存中,并不是直接写入硬盘的文件中,等满足了一定条件(如达到一定数量,遇到换行符\n或文件结束标志EOF)才将数据真正的写入文件.这样做的好处就是加快了文件读写的速度.但这样也带来

linux进程管理命令总结

linux进程管理的相关命令: 1.pstree  --以树状形式显示当前系统进程,和命令tree相似. 2.ps命令 命令格式:ps [options] 常用组合:aux: u:以用户为中心组织的进程状态信息显示 a:与终端相关的进程 x:与终端无关的进程 #ps aux USER : 用户名 PID : 进程号 %CPU :占用的cpu百分比 %MEM  :内存的使用率 VSZ :  virtual memory size ,虚拟内存集 RSS : resident size ,常驻内存集

mschedule 简单linux进程管理(树莓派)

树莓派是神奇的机器,CPU和内存都少的可怜,但体积小功耗低,在上面搞些动搞些西其实也挺有意思,挺好玩的.装的是pidara,基本服务没有精简多少,先cat一下CPU和RAM. [[email protected] ~]$ cat /proc/cpuinfo Processor : ARMv6-compatible processor rev 7 (v6l) BogoMIPS : 464.48 Features : swp half thumb fastmult vfp edsp java tls

12个Linux进程管理命令介绍

12个Linux进程管理命令介绍 当程序可以执行文件存放在存储中,并且运行的时候,每个进程会被动态得分配系统资源.内存.安全属性和与之相关的状态.可以有多个进程关联到同一个程序,并同时执行不会互相干扰.Linux提供了许多命令来让用户来高效掌控上述的操作. 执行中的程序称作进程.当程序可以执行文件存放在存储中,并且运行的时候,每个进程会被动态得分配系统资源.内存.安全属性和与之相关的状态.可以有多个进程关联到同一个程序,并同时执行不会互相干扰.操作系统会有效地管理和追踪所有运行着的进程. 为了管