天天看点

Linux进程管理

一、Linux进程概念

  1.进程:Process,是运行中的程序的一个副本,有生命周期,都由其父进程创建

    Linux内核存储进程信息的固定格式:taskstruct

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

  2.进程优先级:0-139

          0:一般不使用

          1-99:实时优先级;数字越大优先级越高,系统自动安排

         100-139:静态优先级;数字越小优先级越高,可手动更改

 3.Nice值:-20至19,对应于100到139

普通用户只能将自己的优先级调低,root用户可以随意调制

每个队列有两对:运行队列、过期队列,140对280队,通过CPU中断控制来给进程运行时间

  4.进程内存

内存是以Page Frame:页框的方式存储页面数据

每个内存页框的MMU(Memory Management Unit,内存管理单元)的大小一般为4k

进程在内存上的存储单元可能是不连续的

 5.IPC:Inter Process Communication进程间通信

同一主机上:signal信号、shm: shared memory共享内存、semerphor旗语手势

不同主机上:rpc: remote procecure call远程过程调用、socket套接字

  6.进程类型

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

前台(用户)进程:跟终端相关,通过终端启动的进程

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

  7.进程状态

 运行态:running

 就绪态:ready

 睡眠态:可中断睡眠、不可中断睡眠

 可中断:interruptable

 不可中断:uninterruptable

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

僵死态:zombie

  8.进程的分类

CPU-Bound:cpu立即行,对CPU占用大,非交互式的占用大

IO-Bound:io立即行,对io占用大,非交互式的占用大

  9.进程的数字标识16bits:

          0-65535:有效使用1-65535

     1-1023:固定分配,服务器使用,而且只有管理员有权限启用;

     1024-4W:半固定,服务,如mysql等

     4W+:临时;标识临时通信进程

 10.CentOS 5/6/7的启动进程

CentOS 5: SysV init,在系统启动和创建进程借助脚本,串行启动,速度慢

CentOS 6:upstart,在5的基础上升级,同为脚本启动,但时可以支持并行启动

CentOS 7:systemd,并行,以systemd为单一进程同时启动其他进程

二、进程管理相关命令

  1.pstree:进程树查看

[root@localhost ~]# pstree            

systemd─┬─NetworkManager─┬─dhclient

│                └─3*[{NetworkManager}]

├─abrt-watch-log

├─abrtd

├─alsactl

├─atd

├─auditd─┬─audispd─┬─sedispatch

│        │         └─{audispd}

│        └─{auditd}

├─bluetoothd

├─chronyd

├─crond

├─dbus-daemon───{dbus-daemon}

├─login───bash

├─lsmd

├─lvmetad

├─master─┬─pickup

│        └─qmgr

├─polkitd───5*[{polkitd}]

├─rngd

├─rsyslogd───2*[{rsyslogd}]

├─smartd

├─sshd───sshd───bash───pstree

├─systemd-journal

├─systemd-logind

├─systemd-udevd

└─tuned───4*[{tuned}]

  2.ps:process state,查看当前进程状态

    (1)实际上是查看/proc/ *目录下内核中的状态信息;

/proc/*,每个数字表示进程PID,该文件夹内有进程的状态信息   

     内核参数:

可设置其值从而调整内核运行特性的参数;/proc/sys/

状态变量:其用于输出内核中统计信息或状态信息,仅用于查看;

参数:模拟成文件系统类型;

     (2) ps   [options]:

    选项有三种风格:

1) UNIX options, which may be grouped andmust be preceded by a dash.

2) BSD options,which may be grouped and must not be used with a dash.

3)GNU long options, which are preceded by two dashes.

  [OPTION]

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

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

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

-e:显示所有进程

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

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

-H:以层级(树状)结构显示进程的相关信息;

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

      (3)常用组合:aux、ef、eFH、-eo、axo

           1) # ps  aux:显示所有与终端有无关联的进程信息,一用户为中心组织状态信息显示

Linux进程管理

   USER:运行该进程的用户

   PID:进程的ID号码

   %CPU:CPU的占用百分比

   %MEM:内存空间占用比率,占用整个内存空间的比例

   VSZ:虚拟内存集;占用的虚拟内存大小,真正用来占用的内存

 每个内存占用的内存有两种:线性内存空间、物理内存空间

    线性内存:会映射到物理内存,在线性内存空间角度看是连续的内存占用

    物理内存:实际上是以内存页框保存,可能一个进程占用的不连续的页框

   RSS:ResidentSize,常驻内存集;坚决不能转换到swap中内存集

   TTY:运行终端

   STAT:当前进程的运行状态,BSD样式

R:running,运行态

S:interruptable sleeping,可中断睡眠

D:uninterruptable sleeping,不可中断睡眠

T:Stopped,停止状态

Z:zombie,僵死状态,进程结束后,在被回收之前状态

+:表示一个前台进程,占据命令提示符

l:多线程进程

N:低优先级进程

<:高优先级进程

s:session leader ,回话主导进程,如shell,其主导其下的进程

   START:进程开始时间

   TIME:累计运行CPU时间

   COMMAND:使用进程、线程

           2) # ps   -ef:以完整格式显示所有的进程信息

Linux进程管理

   UID:启动进程用户

   PID:运行进程号

   PPID:父进程的进程号,0在内核启动init之前存在,init启动后终止,存在过渡,一般为swap的进程

   C:cpu utilization,CPU的占用百分比

   STIME:启动时间

   TTY:与其终端相关

   CMD:启动此进程的命令

           3) # ps   -eFH:树状层级结构显示

F比f显示的信息更加全面,层级结构显示,缩进相同同层级

PSR:运行在哪颗CPU上,十进制编号,0/1/2/3

Linux进程管理

           4) # ps   -eo ,  #ps axo显示自定义字段列表

 o field1, field2,...:自定义要显示的字段列表,以逗号分隔,o要写在后面,因为要带参数

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

ni:nice值;

priority:priority,优先级;

rtprio:realtime priority,实时优先级;

  3.pgrep,pkill:基于进程名字或者其他属性对相关进程发起查询、发送信号

格式:pgrep|pkill  [options] pattern

-u uid:effective user,有效的用户,活动的用户

-U uid:read user,谁启动的

-t  TERMINAL:与指定的终端相关的进程;

-l:显示进程名;

-a:显示完整格式的进程名;

-Ppid:显示此进程的子进程;

  4.pidof:根据进程名获取取其pid;

pidof PROCESS_NAME

Linux进程管理

  5.top:- display Linuxprocesses,动态显示进程信息

         格式: #top  [OPTION]

      (1)选项:

       -d #:指定刷新时间间隔,默认为3秒;

          -b:以批次方式显示;

       -n #:显示多少批次;

      (2)在top显示过程中通过交互式命令指定排序(默认CPU):

   P:以占据CPU百分比排序;

   M:以占据内存百分比排序;

   T:累积占用CPU时间排序;

      (3)首部信息关闭

  uptime信息:l命令

  tasks及cpu信息:t命令

   内存信息:m命令

      (4)退出命令:q

      (5)修改刷新时间间隔:s

      (6)终止指定的进程:k

Linux进程管理

显示详解:

[root@localhost~]# top

top- 13:11:56 up 14:18,  1 user,  load average: 0.00, 0.01, 0.05

Tasks:413 total,   2 running, 411sleeping,   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

KiBMem :   487080 total,    35240 free,   137440 used,   314400 buff/cache

KiBSwap:  2097148 total,  2097148 free,        0 used.   214568 avail Mem

#当前时间、运行时长、登录的用户数、平均负载(在CPU上等待运行的队列长度)

##此行可以用uptime单独显示

#一共运行多少任务、处于运行状态、睡眠状态、停止状态、僵死状态

#CPU占用百分比:用户空间的进程、内核空间占用比,nice值、空闲百分比、等待io完成时间、

     硬件中断所消耗的CPU百分比、软件中断所消耗的CPU百分比、被(虚拟化程序)偷走的百分比

用户和内核一般为7:3

#内存:总共、空闲、被使用、缓冲和缓存(可以被回收再次使用)

#交换内存:总共、空闲、被使用、缓冲和缓存

  6.uptime命令:显示系统时间、运行时长及平均负载

过去1分钟、5分钟和15分钟的平均负载;等待运行的进程队列的长度;

Linux进程管理

   7.htop命令

         需要安装(第三方安装包):[root@localhost~]#  yum  install -y htop 

    (1)选项:

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

-uUserName:仅显示指定用户的进程;

-sCOLUME:以指定字段进行排序;

     (2)子命令:

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

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

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

a:将选定的进程绑定至某指定的CPU核心;

     (3) 显示叙述

Linux进程管理

左上方数据:表示每颗CPU、内存、交换内存的使用率

右上方数据:

Tasks当前的任务数量,用户空间进程

thr:线程数量

running:运行的数量

Load average :过去一分钟、五分钟、十五分钟的平均负载

       (4)支持鼠标操作的文本窗口

                     如下点击可获取帮助信

Linux进程管理

  8.vmstat命令

         Report virtual memory statistics,报告虚拟内存的统计数据

格式:vmstat  [options] [delay [count]]

      直接给一个数字,表示每几秒刷新一次;给第二个数字表示刷新次数

选项:  -s:显示内存统计数据;

Linux进程管理

procs:

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

b:处于不可中断睡眠态的进程个数;被阻塞的任务队列的长度;

memory:

swpd:交换内存使用总量;

free:空闲的物理内存总量;

buffer:用于buffer的内存总量;

cache:用于cache的内存总量;

swap

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

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

io

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

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

system

in:interrupts,中断速率;

cs:contextswitch, 上下文 切换的速率;

cpu

us:user space

sy:system

id:idle

wa:wait

st:stolen

  9.pmap命令

        report memory map of a process,显示进程的内存映射表。显示结果等同于cat  /proc/PID/maps查看方式

格式:pmap[options] pid [...]

  -x:显示详细格式的信息;

  10.glances命令

         A cross-platform curses-based monitoringtool,跨平台的监控工具,可远程监控

      (1)常用选项:

-b:以Byte为单位显示网上数据速率;

-d:关闭磁盘I/O模块;

-m:关闭mount模块;

-n:关闭network模块;

-t#:刷新时间间隔;

-1:每个cpu的相关数据单独显示;

-o{HTML|CSV}:输出格式;

-f  /PATH/TO/SOMEDIR:设定输出文件的位置;

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

服务模式:

glances  -s -B  IPADDR

IPADDR:本机的某地址,用于监听;

客户端模式:

glances  -c IPADDR

IPADDR:是远程服务器的地址;

  11.dstat命令:

        versatile tool for generating systemresource statistics;生成系统资源使用统计数据命令,安装包在epel源中

Linux进程管理

格式:dstat [-afv][options..] [delay [count]]

常用选项:

-c,--cpu:显示cpu相关信息;

-C #,#,...,total  显示第几颗CPU,total总共的

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

-D sda,sdb,...,tobal  指明具体的磁盘信息

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

-m:Memory的相关统计数据

-n:Interface的相关统计数据;

-p:显示process的相关统计数据;

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

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

--tcp、--udp、--raw 、--socket 网络连接相关

--ipc 进程相关

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

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

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

--top-lantency:延迟最大的进程;

  12.kill命令:

        用于向进程发送信号,以实现对进程的管理;一般来说只有root才具有kill权限

kill  [-s signal|-SIGNAL]  pid…     向进程发信号

kill -l [signal]:显示当前系统可用信号:

Linux进程管理

     注释:

        (1)信号的标识方法:

1)信号的数字标识;

2)信号的完整名称;

3)信号的简写名称;

        (2)常用信号:

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

2)SIGINT:终止正在运行的进程,相当于Ctrl+c,中断

9)SIGKILL:杀死运行中的进程;

15)SIGTERM:终止运行中的进程;通常终止为后台进程。默认信号

18)SIGCONT:继续

19)SIGSTOP:停止,将进程送后台,停止状态

  13.killall命令

        killall [-SIGNAL]  program  对所有与program相关的进程发信号

三、系统作业控制命令

  1.系统作业job

      (1)job种类:

    前台作业(foregroud):通过终端启动,且启动后会一直占据终端;

    后台作业(backgroud):可以通过终端启动,但启动后即转入后台运行(释放终端);

       (2)让作业运行于后台

                1) 运行中的作业:Ctrl+z

                送往后台后,作业会转为停止态;相当于发送kill -19 信号

                2) 尚未启动的作业:  # COMMAND &

             此类作业虽然被送往后台,但其依然与终端相关;如果希望把送往后台的作业剥离与终端的关系:# nohup COMMAND &

       (3)查看所有的作业:#jobs命令

+/- 表示优先级;当调用时不加作业号会默认调用+的命令

       (4)可实现作业控制的常用命令:

      #fg  [[%]JOB_NUM]:把指定的作业调回前台;

      #bg  [[%]JOB_NUM]:让送往后台的作业在后台继续运行;

      #kill  %JOB_NUM:终止指定的作业;

  2.调整进程优先级:

可通过nice值调整的优先级范围:100-139;分别对应于:-20, 19。进程启动时,其nice值默认为0,其优先级是120;

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

(1)nice命令:

以指定的nice值启动并运行命令:# nice  [OPTION] [COMMAND [ARGU]...]

 选项:-nNICE

(2)renice命令:

#renice  [-n]  NICE PID...

(2)查看Nice值和优先级:ps  axo pid, ni, priority, comm 

四、Linux网络客户端工具

  1.ping命令:

ping  [OPTION] destination

-c#:发送的ping包个数;

-w #:限制ping命令超时时长;

-W#:一次ping操作中,等待对方响应的超时时长;

-s#:指明ping包报文大小;

Linux进程管理

  2.hping命令: (epel源提供package: hping3)

send (almost) arbitrary TCP/IP packets to networkhosts;发送网络报文

--fast

一秒钟发10个ping包

--faster

更快的发送ping包

--flood

-i uX

  3.traceroute命令:

跟踪从源主机到目标主机之间经过的网关;