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

进程的概念

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

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

进程的状态

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

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

    ps:查看当前系统进程 

用法 ps [OPTIONS]

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

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

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

-e:显示所有进程

-f:显示丰富格式信息

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

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

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

[[email protected] ~]# 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命令查看当前系统进程树

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

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

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

[[email protected] yum.repos.d]# glances -s -B 189.172.5.105
Glances server is running on 189.172.5.105:61209

   2.配置Client端

[[email protected] ~]# 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、磁盘、内存使用信息

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



时间: 2024-10-14 06:36:26

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

漫漫运维路——基于CentOS6平台软件包管理2

上文(http://7703592.blog.51cto.com/7693592/1631539)已经介绍过使用rpm对CentOS6上的软件包进行管理,之所以强调是在CentOS6之上,是因为在新出的CentOS7上部分操作还可以更简化,而对于Linux运维工程师来说,掌握CentOS6上的使用方式,在CentOS7上就不成问题了,而接下来要谈的是另外一个软件包管理工具,或者说是rpm的前端工具--yum. 为什么要用yum 来聊一个话题,那就是Linux的特性之一:组合小程序完成复杂任务,在

漫漫运维路——基于CentOS6平台软件包管理1

对于Linux运维人员来说,软件包管理无疑是一份非常重要的日常工作,只有轻车熟路的管理好软件包,日常运维工作才能得以进行.在基于CentOS6或者红帽6的平台上,熟练运用RPM和yum来进行服务器软件包管理,有着重要的意义.  利用rpm包管理器管理软件  什么是rpm? rpm是红帽自主研发的一款软件包管理器,早起的rpm被称为Red hat package Manager,而后成为了Linux界软件包管理器的标准,所以现在的rpm是由RPM Package Manager的递归缩写,现在不止

漫漫运维路——rsyslog

一:什么是日志 所谓的日志,就是记录过去发生的事情,在Linux中可以使用日志功能对过去发生的事件进行记录,方便日后对服务器的运行状况进行分析. 二:Rsyslog相关介绍 Linux中日志按照其记录的类型可分为系统日志(syslog)和内核日志(klog),而记录的方式通常也有两种,就是每个程序独立进行记录和使用日志系统进行记录.rsyslog就是日志系统的一种,由早期的syslog改进而来. 对于日志系统来说有两个重要的概念,那就是facility和priority,facility被称作设

漫漫运维路——集群基础知识

集群的基本概念 随着计算机科学的发展,对计算机的性能要求越来越高,比如在很多流量比较大的门户网站以及科学实验环境中需要海量计算的环境,这时候就迫切需要后端的服务器性能有提升.而对于提升后端服务器性能所采用的方式有两种,其一为提升服务器本身的性能,即向上扩展,通过增加服务器的内存,CPU核心数等来实现:其二就是向外扩展,一台服务器不能完成的任务就使用两台.三台甚至更多.在此,以不同的方式把许多服务器组合起来的服务器组就是集群. 集群的分类 按照集群功能的不同,可以把集群分为以下三类: LB集群 L

漫漫运维路——基于fpm的LAMP平台的构建

构建LAMP平台,可以把PHP编译为apache的一个模块或者直接把PHP编译为一个单独的服务,然后独立运行,当apache需要和PHP通信时,apache就变为了一个客户端,向PHP发起请求,然后由PHP把apache发去的代码解释后发回apache,最后由apache返回给客户端. 要编译实现fpm模式的LAMP平台,可以使用两台或者三台虚拟机,分别在虚拟机上编译出apache和PHP和MariaDB,在此我使用两台虚拟机.一台独立运行MariaDB,另一台运行apache和PHP.规划如下

漫漫运维路之Nginx基础

Nginx是当今最流行的WEB服务器一,其特性主要有以下几点: 1.模块化设计.较好的扩展性 Nginx虽然支持模块化,但尚不能向HTTPD那样支持动态模块加载 2.高可靠 Nginx工作时,由主控进程master直接生成多个worker进程,主控进程负责解析配置文件,并启动子进程,子进程直接负责处理客户端连接请求. 3.低内存消耗 Nginx采用了分阶段资源分配技术,使得其cpu和内存占用率极低,官方宣称10000个keepalive的nginx连接只需要2.5M内存. 4.支持热部署 在不停

漫漫运维路——文件服务系列之VSFTP

在Linux中,用于实现文件传输和共享的服务比较多,VSFTP就是其中被使用较多的一个文件服务,而说到VSFTP就不得不说一个话题,那就是FTP. FTP即File Transfer Procotol的首字母缩写,是一个用于控制Internet上文件传输的协议,FTP协议一般采用明文进行数据传输,虽然较之安全性不如HTTPS,设置HTTP,但是其建立连接的过程比较简单,所以其传输速率就更快. FTP在完成数据传输之前就需要建立连接,而传输数据的时候又要建立专门的数据传输连接,由此可把FTP连接分

漫漫运维路——基于rpm包安装实现LAMP

LAMP早期即为Linux+Apache+MySQL+PHP,以基于Linux平台的三个软件搭建出动态网页站点,而现在的LAMP不仅仅代表以上几个软件,因为现在的开源软件种类较多,网站的构建人员的选择也较多,所以现在的M可以为MySQL,也可以为maria DB或者是其他的数据库管理系统.而P则也不仅可代表PHP,在实际应用中还可能是Python.Perl.JSP等语言. 本文将基于rpm包安装的形式实现Linux+Apache+MySQL+PHP的LAMP平台,并且实现以下功能: 1.创建两个

漫漫运维路——网络服务之DNS

一.DNS和BIND是什么? DNS即Domain Name Service的缩写,即为域名服务.在网络出现以后,计算机的通信就是通过IP地址加端口号等形式来进行,人对于数字的记忆往往却有限,随着连入网络的用户的不断增多,用户需要记住的IP地址越来越多,早期为了方便使用,把每一个IP地址对应为一个主机名,如:www.domainname.com对应1.1.1.1形式,并把此种对应关系统一记录于/etc/hosts(GNU/Linux下,windows则有所差异)文件中.但是后来连入网络的用户越来